0

私は Joomla 3 の MVC 12.1 プラットフォームで作業しており、テンプレートのオーバーライドを機能させる際にいくつかの問題が発生しています。

私のコンポーネントには、店舗、クーポン、販売の 3 つのコントローラーがあります。

これらのコントローラーごとに、これに似たビューを呼び出します。

$paths = new SplPriorityQueue;
$paths->insert(JPATH_SITE.'/templates/'.$app->getTemplate().'/html/com_stores/stores', 'normal');
$paths->insert(JPATH_COMPONENT . '/views/stores/tmpl', 'normal');

$view = new StoresViewsStores(new StoresModelsStore, $paths);
$view->setLayout('default');

// Render our view.
echo $view->render();

それらの間の唯一の違いは、ビュー/モデル/ディレクトリをそれぞれ切り替えることです。

テンプレートにオーバーライドを含めない限り、すべてが期待どおりに機能します。ただし、オーバーライドを含めるとすぐに、不安定になります。

テンプレートに を追加するcom_stores/stores/default.phpと、店舗は正しく上書きされますが、クーポンと販売コントローラーは、独自のフォルダーではなく、店舗の上書きを指し始めます。

各コントローラーが同じオーバーライドを指すようにしている、私が見逃しているものはありますか?

参考までに、各コントローラーのパスは次のとおりです。

店舗:

$paths->insert(JPATH_SITE.'/templates/'.$app->getTemplate().'/html/com_stores/stores', 'normal');
$paths->insert(JPATH_COMPONENT . '/views/' . $viewName . '/tmpl', 'normal');

販売:

$paths->insert(JPATH_SITE.'/templates/'.$app->getTemplate().'/html/com_stores/sales', 'normal');
$paths->insert(JPATH_COMPONENT . '/views/' . $viewName . '/tmpl', 'normal');

クーポン:

$paths->insert(JPATH_SITE.'/templates/'.$app->getTemplate().'/html/com_stores/coupons', 'normal');
$paths->insert(JPATH_COMPONENT . '/views/' . $viewName . '/tmpl', 'normal');

助けてくれてありがとう

4

1 に答える 1

0

最後に解決策を見つけました。コンポーネントをトレースして、ロードされているものを確認することから始めました。すべてが私の店のコントローラーを介して強制されていたことが判明しました。そのため、コンポーネントが使用するコントローラーを確認する方法を少し変更しました。

$controller = $app->input->get('controller','stores');

$controller = $app->input->get('view','stores');

注意すべきことの 1 つは、すべてのビューがコントローラー名と完全に一致するため、これが機能することを知るために特別なことをする必要がないことです。

于 2013-04-19T16:49:35.310 に答える