【发布时间】:2013-04-13 01:58:59
【问题描述】:
我正在使用 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');
感谢您的帮助
【问题讨论】:
-
你读过docs.joomla.org/… 吗?
-
问题不在于如何覆盖某些东西,而在于如何在新的 MVC 框架中正确设置路径。后来正如我在回答中描述的那样,我发现控制器设置不正确,这使我所有的观点都指向同一个覆盖。
-
如果您有名为 stores 的控制器,则您没有使用新的 mvc。新的 mvc 具有名称为 save、put、get、copy 和其他动词的控制器。
-
这是一个前端组件,我不需要保存,放,等等等等;除了我用来扩展的新框架类之外的命名约定,而不是将 Legacy 附加到事物...
标签: model-view-controller joomla components joomla-extensions joomla3.0