Как назначить группу пользователю программно при регистрации


Я хотел бы назначить роль пользователям при регистрации из моего модуля.

Я проверил метод createPostAction() класса Mage_Customer_AccountController, где я нашел эти строки:

$customer->save();
Mage::dispatchEvent('customer_register_success',
    array('account_controller' => $this, 'customer' => $customer)
);

Могу ли я использовать событие/наблюдателя ['customer_register_success'] для назначения группы? Должен ли я создать класс наблюдателя событий в своем модуле или есть лучшие подходы?

Author: zsd, 2013-11-25

1 answers

Вы можете сделать это из бэкэнда.

Перейдите к System > Configuration > Customers > customer configuration > Create new account options и выберите группу, которую вы хотите назначить, в опции Default Group

Set up default group

Таким образом, вам не нужно менять какой-либо код. Однако, если вы все же хотите использовать код по какой-то определенной причине, то событие customer_register_success - это правильный путь.

Ваш наблюдатель выглядел бы примерно так

class [Namespace]_[Module]_Model_Observer
{
    public function set_group($observer)
    {
        try {

            $customer = $observer->getEvent()->getCustomer();

            $customer->setData('group_id', 2); // or whatever the group id should be
            $customer->save();

        } catch ( Exception $e ) {}
    }
}
 14
Author: Sander Mangel, 2013-11-25 12:08:42