情境:
我将您重定向到消息页面以显示“成功!”消息来自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 %}
答案 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。