#shopware
#shopware
Вопрос:
У меня есть подписчик на событие
'Shopware_Modules_Admin_SaveRegister_Successful'
и после определенных действий я хочу выполнить перенаправление в конце, но у $args
объекта нет субъекта, что означает, что я не могу вызвать $controller = $args->getSubject();
его и выполнить перенаправление.
Есть ли другой способ выполнить перенаправление внутри функции обратного вызова этого события? 'Shopware_Modules_Admin_SaveRegister_Successful' => 'onRegisterSuccessful'
public function onRegisterSuccessful($args){
$controller = $args->getSubject();
$controller->redirect(
array(
'controller' => 'profile',
'action' => 'verify',
'name' => $name
)
);
}
Ответ №1:
Попробуйте так. Обратите внимание, что вам нужно выйти () после перенаправления, потому что после запуска события Shopware делает свое собственное перенаправление на панель управления клиентами.
public static function getSubscribedEvents()
{
return [
'Shopware_Modules_Admin_SaveRegister_Successful' => 'onregister'
];
}
public function onRegister(Enlight_Event_EventArgs $args)
{
$url = Shopware()->Front()->Router()->assemble([
'controller' => 'profile',
'action' => 'verify'
]);
header('Location: ' . $url, true);
exit();
}
Ответ №2:
Ваш вариант — пойти немного выше и зарегистрировать postDispatch
событие контроллера. Там вы можете перенаправить.
Комментарии:
1. Я знаю об этом, но есть ли возможность сделать перенаправление прямо оттуда?