Symfony 如何在不扩展基本布局的细枝子模板内使用块?
我想了解如何在子模板中使用块标记,该子模板包含在扩展基础模板的另一个html文件中 在index.html中,包含了nav.html,在nav.html中,我为菜单包含了一个带有javascript的块标记,但它没有传递给base.html base.html 索引 nav.htmlSymfony 如何在不扩展基本布局的细枝子模板内使用块?,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放在块外,您需要将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 %}