场景:我将您重定向到消息页面,以显示来自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'));
路由器:
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 %}
在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((方法允许您检查是否有任何FlashMessages仍未显示。