2012-03-05 9 views
15

私は/administrator/components/com_contact/views/contacts/view.html.phpの行34を見ています。$this->items = $this->get('Items');私は理解できません実際のような...私が働いているかを理解していないいくつかの他のものもあります/administrator/components/com_contact/models/contacts.phpJoomla get( 'Items')とその動作

のライン123上のprotected function getListQuery()を呼び出している

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

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

答えて

31

私は...ここに+のJoomla!のMVCで

自動的にモデルcontactsロードビューcontactsextends JViewContactViewContacts)1.7/2.5を想定しています(またはJでを!用語ContactModelContacts)はクラスextends JModelListとして。

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

So;

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

実際にそれparentだで一致getItems()を持つモデルContactModelContactsへの呼び出しです。

モデルファイルcom_contact/models/contacts.phpは、それが自分のgetItems()だが実装されていないので、JModelListクラスからgetItems()は(/libraries/joomla/application/component/modellist.phpにあります)使用されています。

これは、順番にgetListQuery()を呼び出します。魔法は継承されません。

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

$this->get('State')はおそらくJModelの実装に戻っています。

+1

私はまじめな気分になります...あまりにも意味があります。私は、継承されたメソッドが呼び出され、サブクラスメソッドを呼び出すのを見たことがないと思います。私はそれを正しくタイプしたと思う。いずれにせよ - ありがとう! – dingerkingh

+8

Joomlaコンポーネント開発者のチュートリアルは、この混乱の原因です。私はこの混乱について迷って大きな時間を無駄にしている(私はこれが道だと思ったが、チュートリアルでは1.5または2.5にはなかった)。答えをありがとうございました。 – Ruwantha

+4

私はRuwanthaを含む誰もがJoomlaのドキュメントのいずれかに不満を持っていれば、それを改善するために貢献することができます。 Joomlaはすべてのボランティアプロジェクトであり、それをより良くするために皆の助けが必要です。 – betweenbrain

関連する問題