存在一些名为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' %}
更新:现在的问题包括基本模板及其扩展方式。
答案 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 %}