【问题标题】:Override CustomerController of Prestashop in 17.6.1在 17.6.1 中覆盖 Prestashop 的 CustomerController
【发布时间】:2019-11-26 08:26:32
【问题描述】:

我尝试在我的 Prestashop 1.7.6 中添加一个新功能(允许检测自后台以来客户组的更改)。

我认为我必须覆盖我在位于“src /PrestaShopBundle/Controller/Admin/Sell/Customer/CustomerController.php”的 CustomerController.php 中找到的功能。

如何重载这个控制器,我试图在“覆盖/控制器/管理”中创建一个文件,但它没有工作......?

提前谢谢你。

【问题讨论】:

  • 确保每次覆盖某些内容时都清除缓存。

标签: controller overriding prestashop customer


【解决方案1】:

/src 文件夹中的代码不能被覆盖:

Understanding the “src” folder

Overrides

如果要检测某个客户端组的变化,可以使用钩子actionCustomerBeforeUpdateGroup,在classes/Customer处调用:

public function updateGroup($list)
{
    Hook::exec('actionCustomerBeforeUpdateGroup', array('id_customer' => $this->id, 'groups' => $list));
    if ($list && !empty($list)) {
        $this->cleanGroups();
        $this->addGroups($list);
    } else {
        $this->addGroups(array($this->id_default_group));
    }
}

【讨论】:

  • 谢谢,我就是这么想的...您有什么想法吗,我如何才能检测到客户自后台以来的更改组?
【解决方案2】:

如果在覆盖中添加的更改不可见,您必须根据您的环境删除 var/cache/prod/class_index.php 或 var/cache/dev/class_index.php。不用担心,它会被重新创建。

【讨论】:

  • 是的,我试过了...看来src文件夹不能被覆盖
  • 是的,src 中的类不能被覆盖,但 ps_root/classes 和 ps_root.controllers 中的旧类可以。您可能会在那里找到可以使用的东西。 ps_root/classes 中有一些客户类。或者,您可以开发一个模块并在那里扩展 src 功能。
猜你喜欢
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-06
  • 1970-01-01
相关资源
最近更新 更多