joomla com_users控制器重写

时间:2015-04-30 20:12:10

标签: php controller override components joomla3.4

我无法覆盖com_users(Joomla 3.4)的控制器。 (我想,如果经理可以在他加入之后在网站上进行用户注册。所以我想查看注册表,如果我在网站上。)

如果我修改原始文件,那么它工作正常,但我不想修改原始文件。我尝试了2个覆盖插件(MVC override,覆盖主机)。这些插件会覆盖该文件,但在我单击注册按钮后,我收到以下错误消息:

  

致命错误:无法在第136行的D:\ wamp \ www \ mysite \ components \ com_users \ controller.php中重新声明类UsersController

这是同一个文件。 我将行class UsersController extends JControllerLegacy修改为此class UsersController extends UsersControllerDefault。因为我读了这个here。 有什么不同?为什么不这样工作? :/

2 个答案:

答案 0 :(得分:0)

  1. 如果您安装了MVC覆盖插件,请务必在后端将"Make Extendable"设置为(插件:系统 - MVC覆盖)
  2. 我建议您将所有覆盖(html,代码等)放在模板目录中,因此请将控制器文件创建为:templates/YOUR_TEMPLATE/code/com_users/controller.php
  3. 最后,在这个控制器文件中,你会像提到的那样覆盖它:
    class UsersController extends UsersControllerDefault {
  4. 这应该可以解决问题。

答案 1 :(得分:0)

这也发生在我身上。问题是我还覆盖了一个子控制器(在控制器文件夹内)

我必须添加

$bufferContent = str_replace('extends UsersController','extends UsersControllerDefault',$bufferContent);
$bufferContent = str_replace('require_once', '//require_once', $bufferContent);

之后

$bufferContent = str_replace($originalClass,$replaceClass,$bufferFile);

这是一个hack,只能用于com_user覆盖。您需要更改第一行以反映正确的组件类。