我试图覆盖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更改为正确的风险太大,耗时太多。
答案 0 :(得分:0)
在module_name/override
中放置替代文件尚未执行任何操作。安装模块时,PrestaShop将检查您的模块中是否有覆盖文件,并检查您的覆盖类是否已经由另一个模块覆盖了方法。如果是,那么您将无法安装模块。
如果您已安装模块且由于某种原因无法重新安装,则需要将覆盖文件直接放入根override
文件夹并删除
档案cache/class_index.php
。
我不确定是否通过模块升级安装了覆盖文件。我稍后会检查并更新答案。