代码之家  ›  专栏  ›  技术社区  ›  JarsOfJam-Scheduler

当前端PS1.7用户删除其帐户中的邮政地址时,是否会触发钩子?

  •  0
  • JarsOfJam-Scheduler  · 技术社区  · 5 年前

    hookActionValidateCustomerAddressForm

    https://devdocs.prestashop.com/1.7/modules/concepts/hooks/list-of-hooks/ ,可能没有任何钩子来处理我在这个SO问题标题中描述的情况。

    actionDeleteCustomerAddressAfter (当然不存在)

    0 回复  |  直到 5 年前
        1
  •  1
  •   idnovate    5 年前

    您可以使用钩子 ObjectModel Address .

    如果你检查功能 add()

    public function add($auto_date = true, $null_values = false)
    {
        ...
    
        // @hook actionObject*AddBefore
        Hook::exec('actionObjectAddBefore', array('object' => $this));
        Hook::exec('actionObject' . $this->getFullyQualifiedName() . 'AddBefore', array('object' => $this));
    
        ...
    
        // @hook actionObject*AddAfter
        Hook::exec('actionObjectAddAfter', array('object' => $this));
        Hook::exec('actionObject' . $this->getFullyQualifiedName() . 'AddAfter', array('object' => $this));
    
        ...
    }
    

    update() ;

    public function update($null_values = false)
    {
        // @hook actionObject*UpdateBefore
        Hook::exec('actionObjectUpdateBefore', array('object' => $this));
        Hook::exec('actionObject' . $this->getFullyQualifiedName() . 'UpdateBefore', array('object' => $this));
    
        ...
    
        // @hook actionObject*UpdateAfter
        Hook::exec('actionObjectUpdateAfter', array('object' => $this));
        Hook::exec('actionObject' . $this->getFullyQualifiedName() . 'UpdateAfter', array('object' => $this));
    
        ...
    }
    

    然后可以在模块中使用以下挂钩:

    actionObjectAddressAddBefore

    actionObjectAddressAddAfter

    actionObjectAddressUpdateBefore

    actionObjectAddressUpdateAfter

        2
  •  1
  •   Levente Kóré    5 年前

    这是没有钩的。

    更糟糕的解决方案是搜索删除邮政地址并在其中插入代码的方法。

    更好的解决方案是:创建一个新的钩子(甚至 actionDeleteCustomerAddressAfter ),并在删除邮政地址的方法中触发钩子。

            Hook::exec('actionDeleteCustomerAddressAfter ', array('id_customer' => (int)$customer->id));