Prestashop hookActionCustomerAccountAdd不会在管理部分中启动

时间:2018-03-28 22:36:19

标签: php hook prestashop-1.6

一旦用户在prestashop上注册,我想向API发送一些ata。

它在前面工作得很好但在后台办公室事件不会激活吗?

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

在前台办公室,当客户注册时,执行hook actionCustomerAccountAdd

Hook::exec('actionCustomerAccountAdd', array(
                            '_POST' => $_POST,
                            'newCustomer' => $customer
                        ));

在后台,它不会执行这样的钩子(或任何其他钩子)。但您可以在override / controllers / admin / AdminCustomersController.php

中创建覆盖
class AdminCustomersController extends AdminCustomersControllerCore
{
    public function processAdd()
    {
        $customer = parent::processAdd();
        if($customer === false)
             return false;

        // else do what you need here

        return $customer;
    }
}

另一种方法是,不管使用钩子actionCustomerAccountAdd,您都可以覆盖每次添加客户时执行的客户添加功能,无论它在何处创建(除非它已添加到数据库和不使用prestashop功能)。在override / classes / Customer.php中:

class Customer extends CustomerCore
{
    public function add($autodate = true, $null_values = true)
    {
        $res = parent::add($autodate, $null_values);
        if(!$res)
             return $res; // customer not added

        // do what you need. $this is the customer just added
    }
}

如果您使用覆盖,请不要忘记删除文件缓存/ class_index.php