需要在儿童中定义一个树枝块

时间:2015-04-25 15:14:19

标签: symfony twig

我将<title>标记定义为基本twig文件中的块,我想确保所有视图都覆盖此块。有没有办法根据需要标记块,所以如果忘记了,我会收到错误?

1 个答案:

答案 0 :(得分:1)

这不是Twig内置的(也许你应该提出功能请求!)

我可以想到一种方法,但它并没有完全使用块。

如果你有一个base.html.twig,那么我们来说一个简单的例子:

<title>{% block title %}{{ title }}{% endblock %}</title>

并扩展此块:

{% extends '::base.html.twig' %}

但不要声明{% block title %} - 然后Twig将在开发环境(以及生产环境中的prod.log)中发出关于未设置变量的通知。 (你真的不应该让Symfony在制作中抛出一个像这样微不足道的错误。)

然后有两种“满足要求”的方式:

  1. title变量传递到扩展的Twig文件
  2. 使用您自己的内容覆盖title
  3. 示例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 %}