要求在子项中定义一个 Twig 块
Require a Twig Block Be Defined in a Child
我将 <title>
标记定义为我的基础 twig 文件中的一个块,我想确保我的所有视图都覆盖这个块。有没有一种方法可以根据需要标记该块,以便在我忘记时收到错误消息?
这不是 Twig 内置的(也许您应该提出功能请求!)
我能想到一种方法,但它并不完全使用块。
如果您有 base.html.twig
个,让我们举个简单的例子:
<title>{% block title %}{{ title }}{% endblock %}</title>
然后你扩展这个块:
{% extends '::base.html.twig' %}
但不要声明 {% block title %}
- 然后 Twig 将在开发环境中(以及生产环境中的 prod.log
中)发出关于未设置变量的通知。 (你真的不应该让 Symfony 为像这样微不足道的事情在 Production 中抛出错误。)
那么有两种方式"satisfying the requirement":
- 将
title
变量传递到扩展的 Twig 文件中
- 用您自己的内容覆盖
title
块
示例 1,在您的控制器中:
return $this->render('AcmeBundle:Extended:view.html.twig', array(
'title' => 'My fancy title'
));
示例 2,在您的 Twig 文件中:
{% extends 'AcmeBundle::base.html.twig' %}
{% block title %}My fancy title{% endblock %}
我将 <title>
标记定义为我的基础 twig 文件中的一个块,我想确保我的所有视图都覆盖这个块。有没有一种方法可以根据需要标记该块,以便在我忘记时收到错误消息?
这不是 Twig 内置的(也许您应该提出功能请求!)
我能想到一种方法,但它并不完全使用块。
如果您有 base.html.twig
个,让我们举个简单的例子:
<title>{% block title %}{{ title }}{% endblock %}</title>
然后你扩展这个块:
{% extends '::base.html.twig' %}
但不要声明 {% block title %}
- 然后 Twig 将在开发环境中(以及生产环境中的 prod.log
中)发出关于未设置变量的通知。 (你真的不应该让 Symfony 为像这样微不足道的事情在 Production 中抛出错误。)
那么有两种方式"satisfying the requirement":
- 将
title
变量传递到扩展的 Twig 文件中 - 用您自己的内容覆盖
title
块
示例 1,在您的控制器中:
return $this->render('AcmeBundle:Extended:view.html.twig', array(
'title' => 'My fancy title'
));
示例 2,在您的 Twig 文件中:
{% extends 'AcmeBundle::base.html.twig' %}
{% block title %}My fancy title{% endblock %}