如何指定重定向ZF2构造函数?

时间:2013-08-16 05:43:20

标签: php zend-framework zend-framework2

我正在当前项目中使用登录模块。为了访问配置文件页面,用户必须登录。为此我正在检查构造函数中的会话的登录状态。如果用户未登录页面,则应重定向到登录页面。

以下是psedo代码。

    use Zend\Mvc\Controller\AbstractActionController;
    use Zend\View\Model\ViewModel;
    class StatisticsController extends AbstractActionController
    {
    // variables ------
        public function __construct()
        {
           if(!isset($_SESSION['admin_email']))
           {
            $this->redirect()->toUrl('/admin');
           }
        }
    }

以上代码提供以下错误消息

Redirect plugin requires event compose a response

提前致谢

1 个答案:

答案 0 :(得分:3)

最好在onDispatch事件中执行此操作,方法是附加到事件或将代码放入onDispatch方法。

您将无法访问构造函数中的任何ServiceLocator / ServiceManager,因为它们是在实例化类之后注入的。

SomeBaseController.php

/**
 * Override, check for login etc
 * 
 * @param \Zend\Mvc\MvcEvent $e
 */
public function onDispatch(\Zend\Mvc\MvcEvent $e) 
{
    if( ! /** SOME CONDITION **/) {
        return $this->redirect()->toRoute('login');
    }

    return parent::onDispatch($e);
}