役割に基づいて動的なメニューを作りたいと思います。今私はパラメータ(役割)を持つマクロとしてメニューを含めていますが、テストする役割を務めています。私はテンプレートのコントローラからロールの価値を得ることができません。symfony2のTWIGを使ってすべてのテンプレートの変数を共有する
ユーザー(すでにコントローラにキャッチされている)の役割をレイアウトに送信する方法があります。
私は、問題を解決する可能性がある、小枝でグローバル変数を作成することの可能性についてたくさん読んでいます。私が言ったように、私は役割を記述する必要があり、
# layout.html.twig #
{% block menu %}
{{ userRole('admin') }}
{% endblock %}
取り組んでいますが:
この
は私のコードです。私は価値を得る必要があります。私はパラメータとして値を送信しようとしましたが、コントローラーにコンテンツがレンダリングされており、レイアウトが拡張されています。
public function loginAction(){
$ldaprdn = $_POST['login']; // ldap rdn or dn
$ldappass =$_POST['pass'];
$m = new Model();
$params = array('user' => $m->login($ldaprdn,$ldappass),);
$me = new Model();
$user = array('user' => $me->getSettings(),);
$this->render('::menu.html.twig',$user);
return $this->render('intranetBundle:Default:landinga.html.twig', $user);
}
それは私が大きなことで解決できないだけのことです。
可能な解決方法はありますか?たぶん、アーキテクチャの設計は最高のものではありません。または、おそらく私が知らないツールを使用することができます...
大きなことは、どのテンプレートでも、PHPからTWIGへの役割の価値を取得することです。いったん完了すると、問題は解決されます。
{% set var = 'inner variable' %}
My variable is {{ var }}
最後に2番目のオプションを使用しました。それは最初の試みで働く。私はこのドキュメンテーションで自分自身を案内しました:http:// symfony。com/doc/current/book/templating.html#embedding-controllers –
すべてのケースで使用することは悪い解決策であることにご注意ください。あなたのメニューやログインプロフィールの写真のようなウィジェットにはいいかもしれませんが、すべてのものに悪用されることはありません。 (パフォーマンスのために、要求/応答チェーン全体をやり直す) – goto