あなたは正しいですがJTable、Joomlaの方法に従っていJControllerFormて、View Controllerのベースとして使用している場合は、にダウンする必要はありません。
class MycomponentControllerMycontent extends JControllerForm {}
そしてJModelAdminコンポーネントモデルのベースとして使用する
class MycomponentModelMycontent extends JModelAdmin {}
を拡張すると、モデルとテーブルを設定JControllerFormする組み込みのedit()メソッドが提供され、問題のあるレコードへのアクセスと、テーブルがチェックアウトをサポートしているかどうかがチェックされます(列checked_outが存在することを確認することにより)。存在する場合は、checkout()モデルを介して記録を試みます。
JModelAdminを拡張することによりgetItem()、それ、checkIn()およびcheckOut()メソッドを継承します。前述のように、モデルはcheckout()(それが継承するJModelForm)を呼び出し、checked_out列に加えてテーブルにもと呼ばれるものがあることを確認しますchecked_out_time。
この時点で、これらの列のいずれかが存在せず、JModelFormそれを偽装して返された場合true(ジョブが完了したことを示す)、2つのことが起こります。それ以外の場合は、現在のユーザーを取得してから、最初にチェックアウトを試み、別のユーザーに既にチェックアウトされているかどうかを確認します。この時点で、最終的にのJTable実装を呼び出したcheckOut()場合(J3では通常必要とされない独自のテーブル定義でオーバーライドしていない場合)。
JTableまったく同じ列チェックを実行し、すべてが適切である(つまり、有効なIDを持っている)場合、列checked_outを更新し、checked_out_time編集中のレコードを更新します。
補足として、edit()アイテムgetItem()が呼び出されると、それはaを介してレコードをロードしますJTable(つまり、後にがgetTable()続きload($pk)ます(この時点で、プラグインのonBeforeLoadイベントとonAfterLoadイベントJTableもトリガーされます)。
レコードがのバージョンに返されJModelAdmin、ベースstdClassオブジェクトに変換されます(JObject以前は過去に使用されていました)。レコード(現在はオブジェクト)にparams列/属性が含まれているJRegistry場合は、簡単にアクセスできるようにそれをオブジェクトに変換します。
したがって、Joomlaの方法を使用すると、多くの便利なものが無料で手に入ります。:)