当前端 PS1.7 用户删除其帐户中的邮政地址时是否触发了挂钩?
Is there a hook triggered when the frontend PS1.7 user deletes a postal address in its account?
hookActionValidateCustomerAddressForm
只有在他创建或更改地址时才会调用
根据 https://devdocs.prestashop.com/1.7/modules/concepts/hooks/list-of-hooks/,可能没有任何钩子可以处理我在这个 SO 问题的标题中描述的情况。
我错了吗?如果是:钩子是什么?如果不是:我该如何处理这个用例(我真的需要在用户触发这个事件时执行一个程序)?
我正在寻找的钩子的例子是:actionDeleteCustomerAddressAfter
(当然它不存在)
这个没有钩子。
搜索删除邮政地址的方法并在其中插入代码的更糟糕的解决方案。
更好的解决办法是:创建一个新的钩子(甚至actionDeleteCustomerAddressAfter
),并在删除邮政地址的方法中触发钩子。
Hook::exec('actionDeleteCustomerAddressAfter ', array('id_customer' => (int)$customer->id));
您可以使用 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
hookActionValidateCustomerAddressForm
只有在他创建或更改地址时才会调用
根据 https://devdocs.prestashop.com/1.7/modules/concepts/hooks/list-of-hooks/,可能没有任何钩子可以处理我在这个 SO 问题的标题中描述的情况。
我错了吗?如果是:钩子是什么?如果不是:我该如何处理这个用例(我真的需要在用户触发这个事件时执行一个程序)?
我正在寻找的钩子的例子是:actionDeleteCustomerAddressAfter
(当然它不存在)
这个没有钩子。
搜索删除邮政地址的方法并在其中插入代码的更糟糕的解决方案。
更好的解决办法是:创建一个新的钩子(甚至actionDeleteCustomerAddressAfter
),并在删除邮政地址的方法中触发钩子。
Hook::exec('actionDeleteCustomerAddressAfter ', array('id_customer' => (int)$customer->id));
您可以使用 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