我想覆盖组件内的控制器
即;
文件路径:components / com_test / controllers / test.php
如何覆盖test.php?
答案 0 :(得分:3)
正如Pritesh所说,你不能*。
我可以看到几种方法来实现结果:
您可以创建一个扩展test.php控制器的新控制器,然后调用它;为了实现这一点,控制器必须永远不要使用JPATH_COMPONENT,你也必须覆盖视图以指向正确的组件。
在您的视图中添加一项特殊任务,并使用OnAfterRoute()
中的系统插件拦截它。您不会触摸原始控制器,但您的插件将在原始控制器之前触发,因此它可以采取操作,操纵输入和输出,并最终完全避免调用原始控制器。
-
如果编辑原始控制器似乎是一个选项,请忽略它:原始组件将不时更新,你将进入维护噩梦。
我经常要达到这个结果。并且有90%的时间我在系统插件中实现了这一点。如果需要改进,我会将代码提交给原始开发人员,后者通常会在下一个版本中集成这些功能。不要忘记让原始开发者知道,您将帮助改进他们的产品并节省您的时间。
答案 1 :(得分:2)
我们无法覆盖joomla中的控制器和模型,我们只会覆盖组件的视图。