我的主要版面设有{% block javascript %}
。
模板正在扩展它。在这个模板中,我已经包含了我的菜单栏..但是在这个菜单栏中,在某些情况下(根据包含它时的参数),它需要一个特殊的JS文件。
但显然无法从包含的模板中访问某个块。我该怎么办,而不是必须使用这个特殊菜单栏将其包含在每个模板中?
编辑:
以下是我的一些代码。
布局:
<!DOCTYPE html>
<html>
<head>
{# ... #}
{% block stylesheets %}
{# ... #}
{% endblock %}
{# ... #}
</head>
<body id="bodyLayout">
{# ... #}
{% block content %}
{% endblock %}
{% block javascripts %}
{# ... #}
{% endblock %}
</body>
</html>
其中一个模板:
{% extends "CDASvBundle:Default:layout.html.twig" %}
{# ... #}
<div class="col-sm-8">
{% include 'CDASvBundle:Default:blocs-droite.html.twig' with {blocs : "lesPlusContrats"} %}
</div>
CDASvBundle:Default:blocs-droite.html.twig
模板:
{# ... #}
{% elseif blocs == 'Aide' %}
<a href="" data-toggle="modal" data-target="#rappel">› Rappelez-moi</a>
{% include 'CDASvBundle:Component:rappelez-moi-popup.html.twig' %}
{% endif %}
以及'CDASvBundle:Component:rappelez-moi-popup.html.twig
:
<!-- Modal -->
<div class="modal fade" id="rappel" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
{# ... #}
</div><!-- /.modal -->
为了使它工作,它需要一个特殊的JS文件,其中包含一些AJAX和其他小东西。
但我经常认为在HTML页面中间编写一些JS并不干净,所以我想在最后使用主布局中的javascripts
块来包含这个JS文件。这是我的问题!
答案 0 :(得分:1)
如果我正确理解了您的问题,您应该可以从扩展模板中扩展父块,如下所示:
{% block javascript %}
{{ parent() }}
{# Your other JavaScript files here #}
{% endblock %}
试一试。以下是docs的示例。
{% extends "base.html" %}
{% block title %}Index{% endblock %}
{% block head %}
{{ parent() }}
<style type="text/css">
.important { color: #336699; }
</style>
{% endblock %}
{% block content %}
<h1>Index</h1>
<p class="important">
Welcome on my awesome homepage.
</p>
{% endblock %}