Twig:从包含的模板添加JS文件

时间:2014-03-14 16:06:16

标签: templates include twig block parent

我的主要版面设有{% 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文件。这是我的问题!

1 个答案:

答案 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 %}