Magento 2: Событие Подписки на рассылку новостей


Есть ли событие в Magento 2 для подписки на рассылку новостей со страницы профиля ?

Как мне узнать, когда пользователь обновляет свои предпочтения в подписке на рассылку новостей с этой страницы?

Author: Raphael at Digital Pianism, 2017-04-14

3 answers

Вы можете использовать события predispatch/postdispatch, запускаемые классом действий контроллера. В вашем случае:

  • controller_action_predispatch_newsletter_manage_save для наблюдения за поведением ПЕРЕД вызывается метод сохранения.
  • controller_action_postdispatch_newsletter_manage_save для наблюдения за поведением ПОСЛЕ вызывается метод сохранения.
 4
Author: Raphael at Digital Pianism, 2017-04-14 07:17:45

Ответ Фернандо Мигеля не работает, измените

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)
 5
Author: Macr1408, 2018-04-25 22:27:08

Помимо 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.

 1
Author: Fernando Miguel, 2017-08-11 22:42:04