如果Flash消息不存在,则重定向到主页

时间:2014-06-06 22:01:12

标签: php symfony

情境: 我将您重定向到消息页面以显示“成功!”消息来自FlashBag。你点击F5但被踢出主页而不是因为没有消息可以看了。会话已清除。我该如何实现这个逻辑?

我想在渲染视图之前我应该​​在消息控制器中有这样的东西:

if (flash message == doesn't exist anymore) { redirect to home page }

由于

以下是我将用户从其他控制器重定向到消息控制器的方法:

$this->get('session')->getFlashBag()->add('message', 'Successful!');
return $this->redirect($this->generateUrl('message'));

ROUTER:

message:
    pattern:    /message
    defaults:   { _controller: SeHirBundle:Message:index }
    requirements:
        method: GET

讯息控制器:

class MessageController extends Controller
{
    public function indexAction()
    {
        return $this->render('SeHirBundle:Default:message.html.twig');
    }
}

TWIG:

{% for flashMessage in app.session.flashbag.get('message') %}
        <div class="flash-notice">
            {{ flashMessage }}
        </div>
{% endfor %}

1 个答案:

答案 0 :(得分:1)

在MessageController的indexAction()中,你只需要在方法的开头有这个条件:

if (!$this->get('session')->getFlashBag()->has('message')) { // Check if there is no Flash messages of type "message"
    return $this->redirect($this->generateUrl('homepage')); // Enter your homepage route here
}

FlashBag的这个has() method允许您检查是否仍然没有显示任何FlashMessages。