1

我在使用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') 是空的,flash 有一个值。

您有什么想法,为什么我无法从 app.session.flashbag.get('notice') 获取数据?

4

2 回答 2

5

它的正常行为。您首先访问控制器中的闪存,然后将其返回并取消设置。当您再次访问它时,闪存包中不存在密钥,这种方式是空的。

在 github 上查看FlashBag::get

于 2012-10-04T17:31:08.137 回答
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

于 2014-09-03T08:21:05.707 回答