Ich möchte neue Werte in die Stil- und Skriptblöcke im Layout einfügen, aber aus dem eingebetteten Block.
Natürlich wird ein Fehler ausgegeben 在块之外调用“parent”是禁止的.
.
Gibt es eine Lösung?
layout.html.twig:
<!DOCTYPE html> <html> <head> {% block style %} <link rel="stylesheet" href="foo.css"> {% endblock %} </head> <body> {% block content "" %} {% block scripts %} <script src="foo.js"></script> {% endblock %} </body> </html>
list.html.twig:
{% extends 'layout.html.twig' %} {% block content %} {% embed datatable.html.twig %} {% block tbody %} <tr> <td>my awesome table</td> </tr> {% endblock %} {% endembed %} {% endblock %}
datatable.html.twig:
<table id="myDatatable"> <tbody> {% block tbody "" %} </tbody> </table> {% block styles %} {{ parent() }} <link rel="stylesheet" href="dataTables.css"> {% endblock %} {% block scripts %} {{ parent() }} <script src="dataTables.js"></script> {% endblock %}
(Ich kann/will scripts
和 styles
内的 list.html.twig
块。它们是数据表模板的一部分,在 list.html.twig
nicht verwenden.).
Leider kann ich use
nicht verwenden, da diese Funktion keine dynamischen Eigenschaften unterstützt, sondern nur Zeichenfolgen.
Aus der Dokumentation:
Da Use-Anweisungen unabhängig vom an die Vorlage übergebenen Kontext analysiert werden, können Vorlagenreferenzen keine Ausdrücke sein.
正如评论中所述,包含/嵌入不能更改其包含器中的块。 也就是说,有一个可用的扩展可以解决您的问题。
这个
延迟的Twig扩展
可以在这里找到基本上,节点推迟了所述块的执行。 通过这种方式,您可以创建一个变量来保存所有 javascript 链接并输出它们。这可以在高级示例中看到github。
感谢 Eugene Leonovich 制作此扩展