我想根据角色制作一个动态菜单。现在,我将菜单作为一个包含参数(角色)的宏包含在内,但我正在写作测试角色,并且它可以工作。我无法从模板中的控制器获取角色的价值。在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