Функция маршрутизации и перенаправления ZF2 в контроллере

0

Следующая проблема, с которой я столкнулся, выглядит с ошибкой;

An error occurred
An error occurred during execution; please try again later.
Additional information:
Zend\Mvc\Exception\DomainException

File: .../vendor/zendframework/zendframework/library/Zend/Mvc/Controller/Plugin/Url.php:63

Message:
Url plugin requires that controller event compose a router; none found

Я никогда не сталкивался с этой проблемой, пока я пытаюсь перенаправить с моего контроллера. Допустим, я реализую следующую функцию для перенаправления в моем контроллере, которая выдает ошибку выше;

public function __construct()
    {   
        # Get user identity
        $auth = new AuthenticationService();        
        if ($auth->hasIdentity()) {
        $this->identity = $auth->getIdentity();
        } else {
        $this->redirect()->toRoute('admin/login');
        }
    }

Маршрутизация существует, поскольку я могу достигнуть site.com/admin/login/.. login - это ребенок администратора, поэтому запись должна быть хорошей. Я задаюсь вопросом, что происходит не так, и как исправить эту проблему или даже, где искать ее было бы хорошей отправной точкой.

Благодарю!

Теги:
redirect
routing
zend-framework2

1 ответ

1

Если вы посмотрите на ошибку, похоже, что вы не можете использовать плагин перенаправления во время конструкций контроллера.

Url plugin requires that controller event compose a router; none found

может лучше поставить этот код в функцию onDispatch, как это.

public function onDispatch(MvcEvent $e)
{
    # Get user identity
    $auth = new AuthenticationService();
    if ($auth->hasIdentity()) {
        $this->identity = $auth->getIdentity();
    } else {
        return $this->redirect()->toRoute('admin/login');
    }
    return parent::onDispatch($e);
}

не забудьте вернуть перенаправление, так как в противном случае действие все равно будет выполнено.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню