Prestashop 1.6覆盖管理员控制器



我试图通过覆盖来隐藏仪表板上的"帮助"按钮。但这种超控并没有被使用。所以我想知道我做错了什么?为什么不使用覆盖?

我在classes/controller/AdminController.php中找到了它。然后我创建了一个新文件:override/classes/controller/AdminController.php

我无法使覆盖工作,所以我试图检查是否考虑到了它

<?php
class AdminControllerCoreOverride extends AdminControllerCore
{
echo 'askdjfkdjfksl';
}
?>

但什么也没发生。我删除了缓存:index_cache,并且在性能菜单中没有关闭覆盖。在index_cache.php中,我发现AdminController,但覆盖为false。

PS:使用Prestashop 1.6

如果手动创建覆盖文件,则必须删除文件cache/class_index.php才能使覆盖文件工作。

然后,在override/classes/controller/AdminController.php中,您必须覆盖这样的函数:

<?php
class AdminController extends AdminControllerCore
{
    public function initPageHeaderToolbar()
    {
        Your code
    }
}

您不需要将?>放在此文件的末尾。

我遇到了类似的问题(PS7)。在我的案例中,问题是由文件权限引起的。Prestashop需要对要覆盖的文件的写入权限否则将忽略该文件,而不会显示任何警告/错误消息。您可以在没有任何帮助的情况下疯狂地删除class_index.php文件。

此外,由于某种原因,每当我对超控控制器进行任何更改时,我都必须重置模块。

顺便说一句,在PS7中,cache_index位于/app/cache/dev文件夹(和/app/cache/prod文件夹)下。

你可以试试这个:

将类名从AdminCoreControllerOverride更新为AdminCoreOverrideController

AdminControllerCoreAdminController

<?php
  class AdminCoreOverrideController extends AdminController
  {
     public function init() {
         parent::init();
     }
  }

然后你可以通过以下链接在浏览器中进行测试:

http://localhost/YOUR_ADMIN_DIR/index.php?controller=AdminCoreOverride

最新更新