2

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

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

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

这是同一个文件。我将这一行修改class UsersController extends JControllerLegacy为 this class UsersController extends UsersControllerDefault。因为我在这里读到了这个。有什么区别?为什么它不能这样工作?:/

4

2 回答 2

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

这应该可以解决问题。

于 2015-12-17T14:58:48.747 回答
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 覆盖下起作用。您需要更改第一行以反映正确的组件类。

于 2017-04-08T12:26:26.560 回答