Есть ли срабатывание, когда пользователь внешнего интерфейса PS1.7 удаляет почтовый адрес в своей учетной записи? - PullRequest
0 голосов
/ 27 февраля 2020

hookActionValidateCustomerAddressForm вызывается только тогда, когда он создает или изменяет адрес.

Согласно https://devdocs.prestashop.com/1.7/modules/concepts/hooks/list-of-hooks/, вероятно, нет никакого хука для обработки случая, который я описываю в заголовке этого вопроса.

Я не прав? Если да: какой будет крючок? Если нет: как я мог бы справиться с этим вариантом использования (мне действительно нужно выполнить программу, когда пользователь запускает это событие)?

Примером того, какой хук, который я ищу, будет: actionDeleteCustomerAddressAfter ( конечно его не существует)

Ответы [ 2 ]

1 голос
/ 28 февраля 2020

Вы можете использовать хуки из 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

1 голос
/ 28 февраля 2020

Крюка для этого нет.

Худшее решение для поиска метода, который удаляет почтовый адрес и вставляет туда ваш код.

Лучшее решение: создайте новый хук (даже actionDeleteCustomerAddressAfter) и триггер хук в методе удаления почтового адреса.

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