0

我是 Zend Framework 2 的新手。

我创建了一个“Admin”模块,还创建了“UserController”和“AlbumController”。UserController 包含登录和注销操作。AlbumController 包含正常的 CRUD 和欢迎操作。

http://localhost/websites/zendtest/public/admin/login现在,当我已经登录后直接访问时,如何在欢迎页面上重定向页面。

http://localhost/websites/zendtest/public/admin/album/welcome而且,同样的问题是当我尚未登录时直接访问时,如何在登录页面上重定向页面。

任何人都可以建议我解决这个问题吗?

我还有另一个问题,我如何在 layout.phtml 中使用控制器操作值,因为我有 MenuContoller 来创建菜单。所以我需要从 layout.phtml 中的 MenuController 返回数组来创建动态菜单。

那么,我该怎么做呢?

4

2 回答 2

0

我认为你不想在ZF2 doc中解释。要恢复,您必须使用redirect插件测试会话并重定向:

$this->redirect()->toRoute('actionname');

重定向插件的使用方式如下:

->toRoute($route, array $params = array(), array $options = array());

$params使用提供的和$options组装的 URL重定向到命名路由。

要验证像acl旧 ZF 插件这样的用户,请转到此页面

对于最后一个问题,您可以使用(对于 ZF2.1.3)在视图中传递一些值

$layout = $this->layout();
$layout->myvar = $mymenuarray;

并使用在视图中检索它

$myvar...
于 2013-03-13T10:02:05.440 回答
0

我不知道您是如何验证用户的,但如果您正在使用Zend\Auth,那么您可以执行以下操作:

public function loginAction() {
    $authService = new \Zend\Authentication\AuthenticationService();
    $authService->setStorage(new \Zend\Authentication\Storage\Session('user', 'details'));

    if ($authService->hasIdentity()) {
        // User is already logged in; redirect to welcome page
        return $this->redirect()->toRoute('welcome'); // Assumes that you have a 'welcome' route
    }
}

对于欢迎行动:

public function welcomeAction() {
    $authService = new \Zend\Authentication\AuthenticationService();
    $authService->setStorage(new \Zend\Authentication\Storage\Session('user', 'details'));

    if (!$authService->hasIdentity()) {
        // User is not logged in; redirect to login page
        return $this->redirect()->toRoute('login'); // Assumes that you have a 'login' route
    }
}

如果您希望在许多页面上执行上述操作,可能会非常重复,因此您应该考虑使其可重用,例如通过从服务管理器(工厂)获取身份验证服务。

于 2013-03-14T17:14:30.710 回答