2

Symfony2 Framework の使用を開始しました。これは私にとって非常に優れています。Symfony2 で既存のプロジェクトを再構築するための最初のバンドルを作成した後、私はこの問題に遭遇しました:

ナビゲーションを配置{% block navigation %}するbase.html.twigに を作成しました。次に、バンドルで base.html.twig を拡張すると、ナビゲーションが表示されます。すべて順調。

私の問題は、ログインしているユーザーに挨拶を表示したいのですが、base.html.twigにはロジックやコンテナーがなく、ユーザー情報をプッシュする必要がないようにするにはどうすればよいか疑問に思っています。各バンドルのコントローラーでユーザー情報を定義します。

現時点では、コントローラーのアクションは次のようになります。

public function indexAction()
{
    $sUser = $this->getUser();
    return $this->render('@WhatEver/index.html.twig', array(
        'sUser'  => $sUser
    ));
}

私の質問は、ナビゲーションのユーザー情報がすべてのバンドルから存在するようにプロジェクトを管理するにはどうすればよいですか?

Twig Extension は正しい方法ですか? または、テンプレートを含める方法を変更する必要がありますか?

これで私を助けることができるすべての人に感謝します!

4

2 に答える 2

5

標準の Symfony ユーザーは、次を使用して Twig で直接アクセスできます。

{{ app.user.username }}
于 2014-12-18T15:55:13.720 に答える
1

セッションで UserName を設定できます

次に、それを呼び出すことができます{{ session.username }}

別の可能性はFOS:UserBundle. ユーザーがログインしている場合は、で表示できます{{ app.user.name }}

3番目のオプションはTwig Extensionです

于 2014-12-18T15:42:42.563 に答える