Prestashop 1.6覆盖admincontroller

时间:2015-11-18 10:59:13

标签: php controller override prestashop

我试图通过覆盖隐藏仪表板上的'帮助'按钮。但是没有使用覆盖。所以我想知道我做错了什么?为什么不使用覆盖?

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

我无法使覆盖工作,所以我试着通过以下方式检查它是否被考虑在内:

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

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

PS:使用 Prestashop 1.6

3 个答案:

答案 0 :(得分:0)

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

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

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

您无需将?>放在此文件的这一端。

答案 1 :(得分:0)

我遇到了类似的问题(PS7)。在我的情况下,问题是由文件权限引起的。 Prestashop需要对要覆盖的文件执行permision。否则将忽略该文件而不显示任何警告/错误消息。你可以毫无帮助地删除class_index.php文件。

另外,出于某种原因,我必须在我的覆盖控制器中进行任何更改时重置我的模块。

BT7在PS7中,cache_index位于/ app / cache / dev文件夹(和/ app / cache / prod文件夹)下。

答案 2 :(得分:0)

你可以试试这个:

将您的班级名称从 AdminCoreControllerOverride 更新为 AdminCoreOverrideController

AdminControllerCore AdminController

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

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

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