0

我是 Symfony 的新手(正在做我的第一个项目!),我想将用户发送回登录页面,并显示“你没有登录”的错误信息,以防他们没有登录。

有什么方法可以运行某些东西,以便将用户的 URL 从 /secured 更改为 /login 并发送数据,就像:

return $this->render('radloginBundle:Default:login.html.twig',array('errors'=>'You aren\'t logged in'));

所以在 login.html.twig 中,我有:

{% if errors is defined %}
<div class="red">{{errors}}</div>
{% endif %}

它会向用户显示错误消息吗?

我听说过一种可以做到这一点的方法:

return $this->redirect($this->generateUrl('radlogin_login',array('errors'=>'You aren\'t logged in')));

但是用户的网址变成:

http://.../app_dev.php/login?errors=You+aren't+logged+in

代替:

http://.../app_dev.php/login
4

1 回答 1

1

您可以使用会话服务的闪存包通过单个请求(实际上是重定向)传递值。

关于flash 消息的章节可以在 Symfony 文档中找到

如果文档还不够,这里有一个代码示例:

public function updateAction()
{
    // if the method returns null, the user isn't logged in
    if ($this->getUser() === null) {
        $this->get('session')->getFlashBag()->add(
            'errors', // this is a key
            'You are not logged in' // this is a value to add to key
        );

        // this will redirect to the login page if the user isn't logged in
        throw new \Symfony\Component\Security\Core\Exception\AccessDeniedException();
    }
}

然后您可以使用文档中解释的方法来显示错误。

于 2013-07-14T00:53:05.140 回答