Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller Joomla 3 MVC平台12.1自定义组件模板覆盖_Model View Controller_Joomla_Components_Joomla Extensions_Joomla3.0 - Fatal编程技术网

Model view controller Joomla 3 MVC平台12.1自定义组件模板覆盖

Model view controller Joomla 3 MVC平台12.1自定义组件模板覆盖,model-view-controller,joomla,components,joomla-extensions,joomla3.0,Model View Controller,Joomla,Components,Joomla Extensions,Joomla3.0,我正在使用Joomla3的MVC12.1平台,在使用模板覆盖时遇到了一些问题 我的组件有3个控制器:商店、优惠券、销售 对于这些控制器中的每一个,我称我的视图与此类似: $paths = new SplPriorityQueue; $paths->insert(JPATH_SITE.'/templates/'.$app->getTemplate().'/html/com_stores/stores', 'normal'); $paths->insert(JPATH_COMPON

我正在使用Joomla3的MVC12.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');

感谢您的帮助

终于找到了解决方案。我首先通过跟踪组件来查看加载了什么。原来所有的东西都是通过我的商店控制器强迫的。因此,我对我的组件如何检查以确定使用哪个控制器做了一些细微的改变

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

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


需要注意的一点是,我的所有视图都与我的控制器名称完全匹配,因此我不必做任何特殊的事情就知道这会起作用。

你读过吗?问题不在于如何重写某些内容,而在于如何在新的MVC框架中正确设置路径。后来,正如我在回答中所描述的,我发现控制器没有正确设置,这使得我的所有视图都指向相同的覆盖。如果您有名为stores的控制器,则您没有使用新的mvc。新mvc的控制器名为save、put、get、copy和其他动词;除了命名约定之外,我正在使用新的框架类来扩展它,而不是将遗留的东西附加到东西上。。。