Prestashop 1.6 覆盖管理控制器不覆盖

Prestashop 1.6 Override admin Controller not overriding

我正在尝试覆盖 AdminCarriersControllerCore,特别是 postProcess 方法(以便它更新运营商而不是删除和创建新运营商,因为它会破坏引用)。

首先要检查它是否被覆盖:

<?php
class AdminCarriersController extends AdminCarriersControllerCore
{
    public function __construct(){
        die(var_dump('constructor'));
    }
}

我已经把它放到了下面的路径中

modules/<my_module_name>/override/controllers/admin/AdminCarriersController.php

它不会覆盖。

也试过:

modules/<my_module_name>/controllers/admin/AdminCarriersController.php

还删除了缓存文件(没有像文档所说的那样自动重新生成)

rm class_index.php 

感谢您的帮助。 Official Prestashop docs page for overriding

注意:是的,我知道有一个 reference_id 或其他什么,我不应该直接使用 carrier_id,但该模块已经太神秘了,正在尝试更改carrier_id 到正确的太冒险太费时了。

在您的 module_name/override 中放置覆盖文件还没有做任何事情。安装模块时,PrestaShop 将检查您的模块中是否有覆盖文件,并检查您覆盖的 class 是否具有已被另一个模块覆盖的方法。如果是,那么您将无法安装该模块。

如果您已经安装了模块并且由于某种原因无法重新安装它,那么您需要将覆盖文件直接放入根 override 文件夹并删除 文件 cache/class_index.php

我不确定模块升级时是否安装了覆盖文件。我稍后会检查并更新答案。