web-dev-qa-db-ja.com

サイトコントローラー/ビューから管理者モデルにアクセスする方法は?

サイトコントローラーから管理者エンドモデルにアクセスする必要があります。これを行う最良の方法は何ですか?私はsiteコントローラに以下を持っています:

$this->addModelPath(JPATH_COMPONENT_ADMINISTRATOR.'/models');
...
$view = &$this->getView('MyView', 'html');
$view->setModel($this->getModel('MyAdminModel'));
...
$view->display();

次に:

$model = $this->getModel('MyAdminModel');
$this->data = $model->get('Items');

私の見解では、これは少し入り組んでいるようです。もっと簡単な方法はありますか?

4
codinghands

そうではない、あなたはそれを正しくやっている。

管理者テーブルモデルをロードする必要がある場合もあります(レガシー?、J2.5または3を使用していますか?)。これは、ビューだけでなく、コンポーネントの外部にあるモデルが必要な場合に発生します。この場合、JPATH_COMPONENT_ADMINISTRATOR定数。コンポーネントの外部からのモデルの使用を防止します。そして、レガシークラスが移動されたときの問題を防ぐために、フレームワークでレガシークラスをロードしていることを確認してください(J 3.3でファイルシステムの場所を変更しただけです)。

別のアプローチ-おそらくより良く簡単な-は、管理モデルからフロントエンドモデルを継承し、ビューをよりシンプルにすることです。これは、JModelAdminJModelFormを拡張するため機能します。フロントエンドモデルはほとんど空になり、フロントエンドに関連するコードをそこにオフセットして、アーキテクチャをより良い状態に保つ機会が得られます。

4
Riccardo Zorn

管理側とサイト側の両方に存在するクラスの管理バージョンを使用しようとすると、問題が発生する場合があります。この場合、それを行うことはフロントエンドでのクラスの再宣言と見なされ、許可されません。

例は、Joomla 3.4.5のContentModelArticleです。

0
superauto.fr