【问题标题】:Twig Template Include Multiple BodiesTwig 模板包括多个实体
【发布时间】:2014-07-07 07:54:14
【问题描述】:

存在许多名为 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 %}

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

返回如下错误:

 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' %}

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

【问题讨论】:

    标签: symfony twig


    【解决方案1】:

    试试这样:

    {% 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 %}
    

    【讨论】:

    • 在 javscript 中调用父级仍然存在问题。 “在不扩展或“使用”另一个模板的模板上调用“父级”是被禁止的”
    • 包含所有其他模板的索引模板是否扩展了如下文件:{% extends '::base.html.twig' %} ..
    • 是 {% extends 'XXX::layout.html.twig' %}
    • 你能给出最后一个被其他模板扩展的父模板的名称吗..
    • 索引和每个列表模板扩展 XXX::layout.html.twig 然后扩展 ::base.html.twig
    猜你喜欢
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 2013-03-23
    相关资源
    最近更新 更多