Symfony 如何在不扩展基本布局的细枝子模板内使用块?

Symfony 如何在不扩展基本布局的细枝子模板内使用块?,symfony,twig,Symfony,Twig,我想了解如何在子模板中使用块标记,该子模板包含在扩展基础模板的另一个html文件中 在index.html中,包含了nav.html,在nav.html中,我为菜单包含了一个带有javascript的块标记,但它没有传递给base.html base.html 索引 nav.html 您可能会包含另一个细枝模板,该模板使用以下块扩展模板: 在子模板中,您不能将HTML放在块外,您需要将nav.HTML中的HTML代码移动到某些块内包含的模板不能更改其块includer@DarkBee,建议?我不

我想了解如何在子模板中使用块标记,该子模板包含在扩展基础模板的另一个html文件中

在index.html中,包含了nav.html,在nav.html中,我为菜单包含了一个带有javascript的块标记,但它没有传递给base.html

base.html

索引

nav.html


您可能会包含另一个细枝模板,该模板使用以下块扩展模板:


在子模板中,您不能将HTML放在块外,您需要将nav.HTML中的HTML代码移动到某些块内

包含的模板不能更改其块includer@DarkBee,建议?我不想在扩展基本模板的文件中反复包含相同的js文件。我发现最好的方法是使用块扩展。它会延迟块的渲染。如果您遵循我链接中的高级示例,您可以看到如何解决it@DarkBee,看来这是目前为止最好也是唯一的选择。谢谢你,我并不热衷于安装扩展,但在这个问题上,我看不出有什么办法可以解决,我阅读了所有的twigs文档。再一次谢谢你,我明白了。但是为什么OP不在index.html中包含javascript呢?不管怎样,他总是把导航包括在这里。将其包含在索引中不会引入未使用的依赖项,那么问题是什么呢?我建议不要为那些不需要被欺骗的事情“欺骗”树枝引擎:因为这可能会令人沮丧。想象一下,如果您有10个javascript文件,每个控制器一个。将它们添加到您的基础将意味着您有9个不需要的HTTP请求。除此之外,文件中可能有命名相同的函数,但需要根据您所在的控制器执行其他操作,例如,validateFormExactly,正如Jeroen所描述的@DarkBee。因此,不要将它们添加到基中,而是将它们添加到索引中
<!DOCTYPE html>
<html>
<head>
{% block head%}{% endblock %}
<title>{% block title %}{% endblock %}</title>
</head>
<body>

{% block header %}{% endblock %}

{% block body %}{% endblock %}

{% block footer %}{% endblock %}

{% block javascript %}{% endblock %}

</body>
</html>
{% extends "base.html" %}

{% block head %}
    <link rel="stylesheet" href="/css/home.css" />
{% endblock %}

{% block title %}Homepage{% endblock %}

{% block body %}
    {% include "nav.html" %} //here I am including the nav.html

    Nav is above here

{% endblock %}


{% block footer %}
    This is the footer block
{% endblock %}
<header>
    <nav>
        <ul>
            <li>Homepage</li>
            <li>User account</li>
        </ul>
    </nav>
</header>

{% block footer %}
    <script src="/js/dropdownmenu.js"></script>
{% endblock %}