使用app.session.flashbag.get('notice')
时遇到问题。
在控制器中我做
public function updateAction(Request $request, $id)
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('SomeBundle:SomeEntity')->find($id);
$editForm = $this->createForm(new SomeEntityType(), $entity);
$editForm->bind($request);
if ($editForm->isValid()) {
$em->persist($entity);
$em->flush();
$flash = $this->get('translator')->trans('Some Entity was successfully updated');
$this->get('session')->getFlashBag()->add('notice', $flash);
return $this->redirect($this->generateUrl('some_entity_edit', array('id' => $id)));
}
在editAction中,我从会话中获取信息:
public function editAction($id)
{
$em = $this->getDoctrine()->getManager();
$flashes = $this->get('session')->getFlashBag()->get('notice', array());
//...
//...
return array(
'entity' => $entity,
'edit_form' => $editForm->createView(),
'flashes' => $flashes
);
}
我正在尝试TWIG从会话中获取信息:
TWIG: {% for flashMessage in app.session.flashbag.get('notice') %}{{ flashMessage }}{% endfor %}
PHP: {% for flashMessage2 in flashes %}{{ flashMessage2 }}{% endfor %}
app.session.flashbag.get('notice')为空,闪烁有一个值。
你有什么想法,为什么我无法从app.session.flashbag.get('notice')获取数据?
答案 0 :(得分:5)
它的正常行为。您首先访问控制器中的闪存,然后返回并取消设置。当你再次访问它时,flashbag中的密钥不存在,那是空的。
请参阅github上的FlashBag::get
答案 1 :(得分:0)
有一种简单的方法可以使用FlashAlertBundle处理(添加/显示) Symfony flash消息,它是使用纯JavaScript实现的独立Symfony2软件包,因此您不必担心关于使用JS库。
您只需要以下代码即可在twig模板上呈现Flash消息:
{{ render_flash_alerts() }}
可通过获取
https://github.com/rasanga/FlashAlertBundle
https://packagist.org/packages/ras/flash-alert-bundle