我想根據角色製作一個動態菜單。現在,我將菜單作爲一個包含參數(角色)的宏包含在內,但我正在寫作測試角色,並且它可以工作。我無法從模板中的控制器獲取角色的價值。在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。一旦完成,問題就解決了。
最後我使用了第二個選項。它在第一次嘗試時起作用。我用這個文檔引導自己:http:// symfony。com/doc/current/book/templating.html#embedding-controllers –
請注意,在任何情況下使用它都是一個糟糕的解決方案。它對你的菜單或登錄個人資料圖片等小部件可能有好處,但不要把它用於一切的壞習慣。 (對於性能:它重做整個請求/響應鏈) – goto