Magento 2: Событие Подписки на рассылку новостей
Есть ли событие в Magento 2 для подписки на рассылку новостей со страницы профиля ?
Как мне узнать, когда пользователь обновляет свои предпочтения в подписке на рассылку новостей с этой страницы?
3 answers
Вы можете использовать события predispatch/postdispatch, запускаемые классом действий контроллера. В вашем случае:
-
controller_action_predispatch_newsletter_manage_save
для наблюдения за поведением ПЕРЕД вызывается метод сохранения. -
controller_action_postdispatch_newsletter_manage_save
для наблюдения за поведением ПОСЛЕ вызывается метод сохранения.
Ответ Фернандо Мигеля не работает, измените
newsletter_subscriber_save_before
Для
newsletter_subscriber_save_after
После этого вы сможете получить идентификатор подписчика. Или даже получить электронное письмо, используя
$observer->getEvent()->getSubscriber()->getSubscriberEmail()
Все эти функции также доступны:
int getStoreId()
$this setStoreId(int $value)
string getChangeStatusAt()
$this setChangeStatusAt(string $value)
int getCustomerId()
$this setCustomerId(int $value)
string getSubscriberEmail()
$this setSubscriberEmail(string $value)
int getSubscriberStatus()
$this setSubscriberStatus(int $value)
string getSubscriberConfirmCode()
$this setSubscriberConfirmCode(string $value)
int getSubscriberId()
Subscriber setSubscriberId(int $value)
Помимо controller_action_predispatch
и controller_action_postdispatch
если вы хотите работать с модельными событиями, просто объявите на своем Vendor/Module/etc/frontend/events.xml :
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="newsletter_subscriber_save_before">
<observer name="vendor_module_observer_myobserver" instance="Vendor\Module\Observer\MyObserver" />
</event>
</config>
В примере Magento\Информационный бюллетень\Модель\Подписчик у вас есть переменная $_eventPrefix
. Эта переменная будет использоваться в Magento\Framework\Model\AbstractModel для генерации динамических отправок для моделей до и после событий. Также в примере Magento\Информационный бюллетень\Модель\Подписчик у нас есть $_eventObject
для доступа к методам класса в качестве следующий пример наблюдателя фрагмента:
public function execute(Observer $observer)
{
$subscriberId = $observer->getEvent()->getSubscriber()->getId();
$this->logger->notice('subscriber ID: ' . $subscriberId);
}
Обратите внимание, что getSubscriber()
использует значение get + $_eventObject = 'subscriber'
, как описано в комментариях var.