我面临以下问题,错误看起来像这样;
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/ ..登录是管理员的孩子,因此符号必须是好的。我想知道出了什么问题以及如何解决这个问题,甚至在哪里寻找它也是一个很好的起点。
谢谢!
答案 0 :(得分:2)
如果您查看错误,看起来您无法在控制器构造期间使用重定向插件。
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);
}
请记住返回重定向,否则操作仍会执行。