web-dev-qa-db-ja.com

コンポーネントで他のコンポーネントのモデルをどのように使用できますか?

コンポーネントを作成していますが、#__ contentテーブルにアクセスする必要があります。コンポーネントcom_contentは、コンポーネントがそのテーブルで実行する必要があるすべてのことを実行します。コンポーネントのコントローラーにcom_contentモデルをインポートするにはどうすればよいですか?

独自のテーブルを作成する代わりに既存のテーブルを使用することは良い習慣ですか?私のコンポーネントはコメント付きのフォトギャラリーを表示し、#__ contentテーブルを使用してコメントを保存したいと思います。コメントに新しいテーブルを作成する必要がありますか?

8
csbenjamin

_com_content_モデルは、addIncludePath()メソッドを使用してコントローラーにインポートできます。

_JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_content/models', 'ContentModel');
_

addIncludePath()メソッドは、JModelLegacyがモデルを検索するディレクトリを追加します。最初のパラメータとして文字列またはディレクトリの配列を渡すことができます。 2番目のパラメーターとして、モデルのクラスプレフィックスを指定できます(オプション)。

次に、getInstance()メソッドを使用します。

_$model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true));
_

最初のパラメーターはインスタンス化するモデルタイプ、2番目はモデルクラス名のプレフィックス(オプション)、3番目のパラメーターはモデルの構成配列(オプション)です。

しかし、私はカスタムコンポーネントに既存のコアコンポーネントテーブルを使用しないことを好みます。

16
Dmitry Rekun