Как выполнить перенаправление в подписчике объекта Enlight_Event_EventArgs в Shopware 5?

#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. Я знаю об этом, но есть ли возможность сделать перенаправление прямо оттуда?