我遇到了关于FOSUserBundle最重要的可能性的无数问题,并且在使用Twig的继承机制时发现了一些"设计不连贯",我想澄清一下,因为它在某些项目中真的令人不安......
从我读过的内容来看,我们应该如何覆盖模板.比方说,登录模板(Security/login.html.twig
).首先,我需要覆盖全局FOSUser布局(layout.html.twig
').
全球FOSUser布局
{% extends "::layout.html.twig" %} {% block title %}Page title{% endblock title %} {% block body %}{% block fos_user_content %}{% endblock %}{% endblock body %}
在title
和body
块到HTML引用
和标签(全球).现在,谈到登录本身,这就是我写的内容.
登录表格
{% extends "MyUserBundle::layout.html.twig" %} {% block fos_user_content %} {% if error %}{% endblock fos_user_content %}{{ error|trans({}, 'FOSUserBundle') }}{% endif %}
现在,这就是我自动理解的内容:布局创建了一个环境,其他模板被"包含"在fos_user_content
块中.登录页面的结果遵循此方案.
现在,遵循这种模式,我试图扩展注册表格,思考:" 我应该fos_user_content
像以前那样扩展内容!猜猜是什么?不是它!这是我的Registration/register_content.html.twig
文件.
注册表单内容
{% extends "MyUserBundle::layout.html.twig" %} {% block fos_user_content %}{% endblock %}
以前的模式似乎不适用于注册部分:当我遵循相同的方案时,我的注册页面以图形方式加倍.表格打印两次,标题也是如此......就像我在某处做了不必要的包含/继承......
有没有人知道FOSUserBundle是不是设计了覆盖模板的通用模式?为什么我需要重建完整的继承树才能在登录和注册表单上显示类似的内容?
Cerad的回答为注册案例提供了不同的方案.Twig继承树排除register_content.html.twig
并使用register.html.twig
.当你看一下这个文件时,你可以看到它......包括register_content.html.twig
.这是我所说的不连贯.为什么是这样 ?为什么不直接使用包含内容的单个文件?为什么FOS决定添加这个无用的(?)包含步骤?