2017-11-16 12 views
0

私のレイアウト(Twig)では、Middleware authenticationから値を取得したいと思います。Zend expressive - レイアウト

私はtemplates.global.pĥpに、置く場合:

'twig' => [ 
     'globals' => [ 
      // Variables to pass to all twig templates 
      'auth' => (new \Zend\Authentication\AuthenticationService())->hasIdentity(), 
     ], 
    ], 

とレイアウトでは、このコードは動作しますが、それは良い方法である

{% if auth %} 
    Connect 
{% else %} 
    Not connect 
{% endif %} 

をdefault.html.twig?

ありがとうございました:)

答えて

2

良い方法ではありません。まず、configファイルを使用してグローバルテンプレートデータを設定することは、静的データを意味します。設定をキャッシュする場合は、設定でサービスを作成すると失敗します。私はzendオークションサービスについては知らないが、サービスマネージャーや使用している他のコンテナーから入手する方がよいでしょう。これにより、アプリケーション内のどこでも同じサービスが使用されていることを確認できます。

テンプレートに必要な一般的な変数やサービスについては、TemplateRendererのラッパーがあります。そのため、元のテンプレートレンダラーを呼び出す代わりに、私は自分のクラスを呼び出し、そこに共通のデータでテンプレートを作成します。

デフォルトパラメータをTemplateRendererInterface::addDefaultParamに注入することもできます。他のミドルウェアでは、templaterendererを注入し、必要なデフォルトデータを設定し、後でそれをテンプレートにアクセスすることができます。

+0

私はテストします。ありがとうございました ! – Flo

関連する問題