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