Symfony2项目,使用twig进行模板设计的问题


Symfony2 Project, Problems with template design using twig

我对使用twig的模板有疑问,我的问题是以下,我有一个名为index.html.twig的页面,它从base.html.twig延伸。在index.html.twig中有两个包含块(一个用于上方菜单栏;导航栏,另一个对应于页脚)我的导航栏包含以下匿名用户选项,

--登录--

注册--联系我们--

现在,如果我登录,我想加载不同的导航栏而不是上一个导航栏,例如

-

-您已签名为 Blablabla-- 编辑个人资料 -- 退出 --

我怎样才能做到这一点?我的意思是,根据会话包含不同的块。我是否必须在视图中检查用户是否已登录?或者如果用户有会话,我是否必须签入控制器,然后加载不同的索引.html.twig(一个用于登录用户)。关于最后一个选项,我可以创建一个 index.html.twig 和一个 indexLoggedIn.html.twig,在控制器中我可以检查,如果用户已登录,我会渲染 indexLoggedIn,否则我会加载 index.html.twig。我使用FOSUserBundle进行用户管理。谢谢!

你可以做这样的事情:

{% if app.user and is_granted("IS_AUTHENTICATED_REMEMBERED") %}
  {{ include('FooBarBundle:Navbar:authenticated.html.twig') }}
{% else %}
  {{ include('FooBarBundle:Navbar:anonymous.html.twig') }}
{% endif %}

请参阅有关何时检查IS_AUTHENTICATED_REMEMBERED以及何时使用 IS_AUTHENTICATED_FULLY 的文档。并查看许多其他 SO 帖子之一以获取更多提示。