Symfony2 - 在实体操作上添加flashbag消息

时间:2013-11-12 11:26:26

标签: symfony notifications crud

我正在开发一个Symfony2.3.​​6项目,它运行良好。对于某些实体,我已经为一些CRUD做了一个后端,它也很好用。

现在我要做的是在对实体进行操作时通知用户。因此,我希望在Symfony1.4所做的情况下,在保存,更新或删除实体时进行通知。 如果在实体或控制器中甚至是事件,我有疑问把flashbag消息放在哪里?!

哪个地方我可以放置这种功能,以及我该怎么做? 感谢...

1 个答案:

答案 0 :(得分:3)

documentation完美地描述了如何在控制器中存储和显示这些消息。

在您的控制器中

public function updateAction(Request $request)
{
    $form = $this->createForm(...);

    $form->handleRequest($request);

    if ($form->isValid()) {
        // do some sort of processing

        $this->get('session')->getFlashBag()->add(
            'notice',
            'Your changes were saved!'
        );

        return $this->redirect($this->generateUrl(...));
    }

    return $this->render(...);
}

在您的Twig模板

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

您可以将不同的flashbags用于其他消息,例如错误:

在您的控制器中

[...]
        $this->get('session')->getFlashBag()->add(
            'delete',
            'The entity has been deleted!'
        );
[...]

在您的Twig模板

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

使用CSS设置delete类的样式。