Есть ли событие для регистрации учетной записи в Magento?

Я хотел бы иметь возможность запускать некоторые функции с module который я создаю, когда customer registers учетную запись, но я не могу найти какое-либо event которое будет запущено при new customer registration .

Кто-нибудь знает о event , которое отправлено для этого?

Solutions Collecting From Web of "Есть ли событие для регистрации учетной записи в Magento?"

Всякий раз, когда я ищу событие, я временно отредактирую файл Mage.php для вывода всех событий для конкретного запроса.

 File: app/Mage.php public static function dispatchEvent($name, array $data = array()) { Mage::log('Event: ' . $name); //not using Mage::log, as //file_put_contents('/tmp/test.log','Dispatching '. $name. "\n",FILE_APPEND); //poor man's log Varien_Profiler::start('DISPATCH EVENT:'.$name); $result = self::app()->dispatchEvent($name, $data); #$result = self::registry('events')->dispatch($name, $data); Varien_Profiler::stop('DISPATCH EVENT:'.$name); return $result; } 

и затем выполнить любое действие, которое я пытаюсь подключить. События Magento логически называются, поэтому сканирование / сортировка по результирующим журналам обычно показывает, что мне нужно.

customer_register_success – это то, что вы ищете:

 <config> <frontend> <events> <customer_register_success> <observers> <your_module> <type>singleton</type> <class>your_module/observer</class> <method>yourMethod</method> </your_module> </observers> </customer_register_success> </events> </frontend> </config> 

Я узнал, как добиться этого сегодня. Он включает использование одного из общих событий контроллера. Этот узел в config.xml подключается к правильному событию:

 <events> .... <controller_action_postdispatch_customer_account_createPost> <observers> <your_module_here>...etc 

Событие controller_action_postdispatch_REQUESTPATH Mage_Core_Controller_Front_Action для каждого контроллера, который расширяет Mage_Core_Controller_Front_Action (в основном это все), что делает его очень легким для таргетинга. Тоже для controller_action_predispatch_REQUESTPATH .

Я немного удивлен, что ни один из ответов не будет полностью решен.

Создание клиента может произойти

  1. по URL-адресу клиента / учетной записи / создать
  2. по регистрации в кассе

Я решил это, отслеживая два события:

config.xml

  <events> <controller_action_postdispatch_customer_account_createpost> <observers> <myextensionkey_create_account> <class>myextensionkey/observer</class> <method>createAccount</method> <type>singleton</type> </myextensionkey_create_account> </observers> </controller_action_postdispatch_customer_account_createpost> <checkout_submit_all_after> <observers> <myextensionkey_checkout_create_account> <class>myextensionkey/observer</class> <method>createAccountCheckout</method> <type>singleton</type> </myextensionkey_checkout_create_account> </observers> </checkout_submit_all_after> </events> 

и в Observer.php

 public function createAccount($observer) { ... } //Nothing special here public function createAccountCheckout($observer) { if ($observer->getQuote()->getData('checkout_method') != Mage_Checkout_Model_Type_Onepage::METHOD_REGISTER) { return; } 

Изменить: я изменил

 <controller_action_predispatch_customer_account_createpost> 

в

 <controller_action_postdispatch_customer_account_createpost> 

потому что при предварительной настройке учетная запись еще не создана. Может возникнуть ошибка, например, если почта уже существует в магазине.

Для этого нет прямого события, но вы можете использовать событие customer_save_commit_after . Это событие также гарантирует, что клиент будет сохранен в базе данных магазина. Проблема с этим событием состоит в том, что он запускается дважды. Bellow – это взлом, который позволяет вам использовать это событие – функция наблюдателя указана в списке:

 public function customer_save_commit_after($p_oObserver) { $l_oCustomer = $p_oObserver->getCustomer(); if ($l_oCustomer->isObjectNew() && !$l_oCustomer->getMyCustomKeyForIsAlreadyProcessed()) { $l_oCustomer->setMyCustomKeyForIsAlreadyProcessed(true); // new customer } else { // existing customer } return false; } 

Надеюсь, это поможет кому-то!

Вы также должны учитывать, когда пользователь регистрируется на лету в кассе: регистр на chekout. Думая об этом случае, вы можете поймать событие «checkout_type_onepage_save_order_after» своим собственным классом Observer, а затем этот код …

 if($observer->getEvent()->getQuote()->getCheckoutMethod(true) == Mage_Sales_Model_Quote::CHECKOUT_METHOD_REGISTER){ (...) } 

Любой может сказать: Mage_Sales_Model_Quote-> getCheckoutMethod () устарел с 1.4! ,но:

  • Если мы вызываем метод ortodox Mage_Checkout_Model_Type_Onepage-> getCheckoutMethod (), ожидая чего-то как «METHOD_REGISTER», это выполняется:
  •  if ($this->getCustomerSession()->isLoggedIn()) { return self::METHOD_CUSTOMER; } 

    … «METHOD_CUSTOMER» – это имя для проверки с уже зарегистрированным пользователем, а не с нашим делом …. но да !, потому что …

  • … операция регистрации выполняется до события «checkout_type_onepage_save_order_after». Тогда у нас есть METHOD_CUSTOMER. Ups, что-то непоследовательное?
  • Fortunatly, Цитата остается с исходным значением: CHECKOUT_METHOD_REGISTER
  • Любая другая идея для регистрации при оформлении заказа?

    На самом деле есть customer_save_after и customer_save_before (magento 1.5)

    Если вы хотите изменить «на лету» некоторые данные после сообщения формы, выберите customer_save_before , измените нужные данные и все (действие сохранения произойдет после этого, поэтому ваши изменения будут учтены).

    $customer->save() просто не работает в customer_save_after . (фатальная ошибка) Используйте этот наблюдатель для запуска кода после создания клиента, которые НЕ относятся к данным клиента.

    Надеюсь, это поможет!

    Вы можете попробовать customer_save_after, единственное, что регистрация отправляет это событие дважды

    Я искал то же самое. Я считаю, что событие customer_register_success .

    Вы можете найти ссылку для всех событий по адресу: http://www.nicksays.co.uk/magento_events_cheat_sheet/

    customer_register_success

    adminhtml_customer_save_after

    эти два являются событиями по умолчанию, когда клиент вставляется в базу данных …. Первое событие срабатывает во фронте, когда пользователь регистрируется, а второе событие срабатывает в бэкэнд, когда клиент создается через панель администратора … надеюсь, вы знаете, как зарегистрировать наблюдателя на мероприятие … надеюсь, это поможет вам …

    Я нашел событие checkout_submit_all_after.

     <checkout_submit_all_after> <observers> <my_example> <class>my_example/observer</class> <method>customerRegistered</method> </my_example> </observers> </checkout_submit_all_after> 

    В моем Observer.php я получаю объект quote, который передается.

     public function customerRegistered (Varien_Event_Observer $observer) { $quote = $observer->getQuote(); $checkout_method = $quote->getData(); $checkout_method = $checkout_method['checkout_method']; if ($checkout_method == Mage_Checkout_Model_Type_Onepage::METHOD_REGISTER) { } 

    Не используйте $ quote-> getCheckoutMethod (), вместо этого он выдает login_in. Не знаю, почему. Надеюсь это поможет.

    Ответ на этот вопрос заключается в том, что для этого нет события.

    Я обнаружил, что события customer_login и customer_session_init выставляются при создании учетной записи. Вы можете зарегистрировать прослушиватель для обоих, а затем проверить, чтобы увидеть дату создания в учетной записи?

    Вы можете использовать событие customer_register_success. Он запускается после успешного создания клиента. Вот ссылка обмана. Надеюсь, это также поможет вам.

     http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/ 

    customer_register_success – это событие, отправленное после успешной регистрации клиента.
    Вот код от Mage/Customer/controllers/AccountController.php :: 454 в magento 1.8 :

     protected function _dispatchRegisterSuccess($customer) { Mage::dispatchEvent('customer_register_success', array('account_controller' => $this, 'customer' => $customer) ); } 

    customer_save_after – событие, которое вызывается после customer registration нового customer registration .

    Читайте обо всех events здесь:

    http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/events

    имя события: customer_registration_is_allowed

    Я не уверен, что это вы хотите, вы можете написать наблюдателю для тестирования