我有一个博客,并且有两条路由重定向到我的个人资料页面和“更新个人资料”页面
@Route(“ / profil / {slug}”,名称=“ profile”)
@Route(“ / profil / {slug} / infos”,name =“ profile_update”)
这些路线在我的导航栏中有两个链接,这是我的base.html.twig模板的一部分
所以在我的base.html.twig中,我做了类似的事情
<a href="{{ path('profile', {'slug' : membre.slug }) }}" class="dropdown-item">Account</a>
<a href="{{ path('profile_update', {'slug' : membre.slug }) }}" class="dropdown-item">Update profile</a>
但是它说“变量膜不存在”:(
它仅在我的配置文件路由中有效,因为在其模板中页面中也具有那些链接,因此在控制器中,我做了:
/**
* @Route("/profil/{slug}", name="profile")
*/
public function profile(Membre $membre){
return $this->render('blog/profile.html.twig', [
'membre' => $membre
]);
}
它可以工作,但是base.html.twig具有 NO CONTROLLER (无控制器),它只是一个“基本”模板,因此我应该如何告诉它变量的来源?
谢谢
答案 0 :(得分:1)
问题在于,无论用户是否设置为模板变量,所有控制器动作都使用base.html.twig
。一种解决方案是仅在设置成员变量时显示这些链接:
{% if membre is defined %}
<a href="{{ path('profile', {'slug' : membre.slug }) }}" class="dropdown-item">Account</a>
<a href="{{ path('profile_update', {'slug' : membre.slug }) }}" class="dropdown-item">Update profile</a>
{% endif %}
唯一的选择是始终将变量传递给模板,这将很困难,因为它需要一些额外的输入。