Joomla - 如何覆盖组件控制器?

时间:2015-02-16 07:03:29

标签: joomla

我想覆盖组件内的控制器

即;

文件路径:components / com_test / controllers / test.php

如何覆盖test.php?

2 个答案:

答案 0 :(得分:3)

正如Pritesh所说,你不能*。

我可以看到几种方法来实现结果:

  1. 您可以创建一个扩展test.php控制器的新控制器,然后调用它;为了实现这一点,控制器必须永远不要使用JPATH_COMPONENT,你也必须覆盖视图以指向正确的组件。

  2. 在您的视图中添加一项特殊任务,并使用OnAfterRoute()中的系统插件拦截它。您不会触摸原始控制器,但您的插件将在原始控制器之前触发,因此它可以采取操作,操纵输入和输出,并最终完全避免调用原始控制器。

  3. -

    如果编辑原始控制器似乎是一个选项,请忽略它:原始组件将不时更新,你将进入维护噩梦。

    我经常要达到这个结果。并且有90%的时间我在系统插件中实现了这一点。如果需要改进,我会将代码提交给原始开发人员,后者通常会在下一个版本中集成这些功能。不要忘记让原始开发者知道,您将帮助改进他们的产品并节省您的时间。

    • 实际上你可以通过在Joomla之前加载类来覆盖核心的很大一部分;这限制了非核心类,但它是可行的。这就是我在n.2中提到的。

答案 1 :(得分:2)

我们无法覆盖joomla中的控制器和模型,我们只会覆盖组件的视图。