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')は空で、フラッシュには値があります。

app.session.flashbag.get('notice')からデータを取得できない理由はありますか?

4

2 に答える 2

5

その通常の動作。最初にコントローラーのフラッシュにアクセスするので、フラッシュが返され、設定が解除されます。再度アクセスすると、キーはフラッシュバッグに存在しません。その方法は空です。

FlashBag::getをgithubで参照してください

于 2012-10-04T17:31:08.137 に答える
0

FlashAlertBundleを使用してSymfonyフラッシュメッセージを処理(追加/表示)する簡単な方法があります。これは純粋なJavaScriptで実装されたスタンドアロンのSymfony2バンドルであるため、JSライブラリの使用について心配する必要はありません。

Twigテンプレートでフラッシュメッセージをレンダリングするには、次のコードが必要です。

{{ render_flash_alerts() }}


https://github.com/rasanga/FlashAlertBundlehttps://packagist.org/packages/ras/flash-alert-bundleから入手可能

于 2014-09-03T08:21:05.707 に答える