我想覆盖组件内的控制器
IE;
文件路径:components / com_test / controllers / test.php
如何覆盖test.php?
正如Pritesh所述,您不能*。
我可以看到几种实现结果的方法:
您可以创建一个扩展test.php控制器的新控制器,然后调用该控制器。为了实现这一点,控制器必须永远不要使用JPATH_COMPONENT,并且您还必须覆盖视图以指向正确的组件。
在视图中添加一个特殊任务,并使用中的系统插件对其进行拦截OnAfterRoute()
。您不会触摸原始控制器,但是您的插件会在原始控制器之前触发,因此它可以采取措施,控制输入和输出,并最终避免完全调用原始控制器。
--
如果似乎可以选择编辑原始控制器,请忽略它:原始组件将不时更新,您将陷入维护的噩梦。
很多时候我必须达到这个结果。我有90%的时间是在系统插件中实现此目标的。如果进行了改进,我会将代码贡献给原始开发人员,该开发人员通常会将功能集成到其下一个发行版中。不要忘了让原始开发人员知道,您将帮助改进他们的产品并节省时间。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句