树枝模板包含多个体

时间:2014-07-07 07:54:15

标签: symfony twig

存在一些名为list.html.twig的模板,希望在单个索引模板中包含所有这些不同的列表模板。

每个列表模板采用以下形式:

{% extends 'XXX::layout.html.twig' %}
{% block body %}
Stuff handle data in different ways per template.
{% endblock %}

{% block javascripts %}
    {{ parent() }}
    <script type="text/javascript">
        doSomethingMaybeCrudJSCode('table ZZZ');
    </script>
{% endblock %}

索引模板如下所示:

{% extends 'XXX::layout.html.twig' %}
{% block title %}Contacts{% endblock %}

{% block body %}

{% include 'XXX:AAA:list.html.twig' with { 'data': dataA } %}
{% include 'XXX:WWW:list.html.twig' with { 'data': dataW } %}
{% include 'XXX:YYY:list.html.twig' with { 'data': dataY } %}
{% include 'XXX:ZZZ:list.html.twig' with { 'data': dataZ } %}

{% endblock %}

列表模板也可以通过网址直接访问。

返回以下错误:

 Calling "parent" on a template that does not extend nor "use" another template is forbidden in XXX:AAA:list.html.twig at line 14 

我已经看过使用use但是仍然无法使用它,它应该如何与上面的例子一起使用?或者是我需要创建一个每个列表包含的新模板以及索引(一个用于js,一个用于html)?这是不太可取的,如果有的话我可以遵循命名约定,所以我知道哪个模板只包含在内?我倾向于使用更少的模板进行管理

基本模板如下:

<!-- app/Resources/views/base.html.twig -->
<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>
                {% block body %}{% endblock %}

        {% block javascripts %}
            <script type="text/javascript" src="{{ asset('js/jquery-1.11.1.js') }}"></script>
        {% endblock %}
    </body>
</html>

布局模板:

{# src/XX/XBundle/Resources/views/layout.html.twig #}
{% extends '::base.html.twig' %}

更新:现在的问题包括基本模板及其扩展方式。

1 个答案:

答案 0 :(得分:0)

试试这样:

{% block title %}Contacts{% endblock %}

{% block body %}
   {{ include('XXX:AAA:list.html.twig',{ 'data': dataA }) }}
   {{ include('XXX:WWW:list.html.twig',{ 'data': dataA }) }}
   {{ include('XXX:YYY:list.html.twig',{ 'data': dataA }) }}
   {{ include('XXX:ZZZ:list.html.twig',{ 'data': dataA }) }}
{% endblock %}