web-dev-qa-db-ja.com

Joomla get( 'Items')とその仕組み

/administrator/components/com_contact/views/contacts/view.html.phpの34行目を見ています。ここで$this->items = $this->get('Items');と表示されています。理解できないのは、実際にprotected function getListQuery()/administrator/components/com_contact/models/contacts.phpの123行目

他にも、どのように機能しているかわからないことがいくつかあります...

$this->pagination   = $this->get('Pagination');
$this->state        = $this->get('State');

これらは何を呼んでいますか? 「get()」のドキュメントを見ましたが、getPagination、getState、getItemsというメソッドが表示されないため、実際に何が呼び出されているのかわかりません... get( 'Items')はどういうわけか魔法のようにgetListQuery()を呼び出します。

16
dingerkingh

ここでは1.7/2.5 +だと思います...

Joomla!のMVCでは、ビューcontactsContactViewContacts which _extends JView_)はモデルを自動的にロードしますcontacts(またはJ!の用語ではContactModelContacts )これはクラスとして_extends JModelList_。

get()はビューを調べて、登録されたモデルまたはビューのプロパティからデータを取得します。

そう;

_$this->items = $this->get('Items');
_

実際には、ContactModelContactsに一致するgetItems()があるモデルparentへの呼び出しです。

モデルファイル_com_contact/models/contacts.php_は独自のgetItems()を実装していないため、JModelListクラスのgetItems()が使用されます(_/libraries/joomla/application/component/modellist.php_にあります)。 )。

これにより、getListQuery()が呼び出されます。継承だけの魔法はありません。

$this->get('Pagination')は同じことをしています。つまり、モデルの親の実装にアクセスします。

$this->get('State')はおそらくJModelの実装にまでさかのぼります。

35
Craig