Symfony 4-base.html.twig中的“变量不存在”

时间:2019-08-25 15:59:06

标签: php symfony variables

我有一个博客,并且有两条路由重定向到我的个人资料页面和“更新个人资料”页面

@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 (无控制器),它只是一个“基本”模板,因此我应该如何告诉它变量的来源?

谢谢

1 个答案:

答案 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 %}

唯一的选择是始终将变量传递给模板,这将很困难,因为它需要一些额外的输入。