2016-05-31 12 views
1

私はJoomla 3用のカスタムコンポーネントを生成するためにコンポーネントクリエータを使用しました。フロントエンドのモデルの機能を必要とする管理者パネルのビューがあります。彼はあると思われることに応答して、Joomla 3 - カスタムコンポーネント - 管理者ビューからサイトモデルにアクセスする方法

How can I include multiple models in one view for in a Joomla 3.x component built with Component Creator

しかし:私は、適切な答えを見つけるためにしようと、数日間のGoogle検索をやっている

、これは私が作業応答になってきた最も近いです別のサイトビューのサイトビューモデルを使用します。ここで

は私のコンポーネントの構造について少しです:

名:com_stargazer

管理ビュー:?メール

index.phpのオプション= com_stargazer &ビュー=メール&レイアウト=テスト /管理者/コンポーネント/ com_stargazer/views/email/tmpl/test.php

サイトの表示とモデル:returnpage

/components/com_stargazer/models/returnpage.php /components/com_stargazer/views/returnpage/tmpl/default.php

私は、パスを含めてサイトのモデルを含めるために、私の管理ビューを変更しようとした:

$this->setModel(getModel(JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_stargazer/models', 'returnpageModel'))); 
    $this->setModel(JModelLegacy::getInstance('returnpage', 'stargazerModel')); 
    // assigns array from the second model to 'ItemsOtherModel.' there is no '$' sign used. 
    $this->ItemsOtherModel = $this->get('tags','returnpage'); 

ただし、getModelはビューからアクセスできないようです。 (?おそらくコントローラのみ)

その他、参照が(コメントで掲示その他の参照)、コントローラ変更すると言う:最後の数日間に

https://docs.joomla.org/Using_multiple_models_in_an_MVC_component

を、私は上記の様々な繰り返しを試してみました参照されたコードサンプル。 。 。最終的に私はどのコントローラを変更するのか混乱していますか?これを動作させるにはadminコントローラを変更する必要がありますか、またはサイトコントローラですか? adminモデルに関数を追加して、サイトビューでアクセスする方が簡単でしょうか?

エラーを投げているモデルがわからないため、デバッグも難しかったです。これまでのところ私の推測では、運営者の視点からはサイトモデルにはまったく付き合っていなかったということです。これを並べ替えることでどんな助けにも感謝します。

これは私の最初の質問ですので、十分明確であることを願っています。
必要に応じて明確にすることができます。 ありがとうございます。

+0

その他Referrencesのrequire_onceを使用することができますJLoaderを使用する: https://www.component-creator.com/en/forum/community-support/153-multiple-models-in-one-view-for-j3-3 *** https://api.joomla.org/cms-3/classes/JModelLegacy.html *** https://www.corephp.com/blog/joomla-mvc-load-a-model-from-anywhere/ *** https://lvstechnologies.wordpress.com/2013/07/17/joomla-mvc-load-a-model-from-anywhere/ *** –

答えて

2

フロントエンドまたはバックエンドモデルを呼び出すには、モデルファイルを含めるためにJLoaderまたはrequire_onceを使用することができます。 この

JLoader::import('joomla.application.component.model'); //Load the Joomla Application Framework 

JLoader::import('returnpage', JPATH_SITE . '/components/com_stargazer/models'); //Call the frontend model directory 


$tags_model = JModelLegacy::getInstance('returnpage', 'StargazerModel');//Instantiate the model 


$tags = $tags_model->gettags(); 

のような管理ビュー内のモデルを呼び出すことができますし、また、

require_once JPATH_COMPONENT_SITE.'/models/returnpage.php'; 

$tags_model = JModelLegacy::getInstance('returnpage', 'StargazerModel');//Instantiate the model 


$tags = $tags_model->gettags(); 
+0

ありがとうございます。あなたの答えはこれをとても簡単にしました。私は両方の方法を試しましたが、どちらも同じように機能します。他のものより優先される方法があるかどうか知っていますか?私はあなたの時間と専門知識を感謝します。 –

+0

あなたは大歓迎です。 2番目は実行時間がかかりませんが、Joomla APIに準拠するので、最初の方が優先します。 –

関連する問題