我想在佈局中的樣式和腳本區塊內注入新值,但來自嵌入區塊。
當然,它會拋出錯誤 在區塊之外呼叫“parent”是禁止的.
。
有什麼解決辦法嗎?
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 %}
(我不能/不會使用scripts
和styles
內的list.html.twig
區塊。它們是資料表模板的一部分,在 list.html.twig
.)。
遺憾的是我不能使用 use
因為這個函數不支援動態屬性,只支援字串。
來自文件:
由於 use 語句的解析與傳遞給模板的上下文無關,因此模板引用不能是表達式。
P粉3333954962023-12-21 11:48:45
如評論所述,包含/嵌入不能更改其包含器中的區塊。 也就是說,有一個可用的擴充功能可以解決您的問題。
這個延遲的Twig擴充
可以在這裡找到
基本上,節點延遲了所述塊的執行。 透過這種方式,您可以建立一個變數來保存所有 javascript 連結並輸出它們。這可以在高級範例中看到github。
感謝 Eugene Leonovich 製作此擴充功能