Je souhaite injecter de nouvelles valeurs à l'intérieur des blocs de style et de script dans la mise en page, mais à partir du bloc intégré.
Bien sûr, cela génère une erreur 在块之外调用“parent”是禁止的.
.
y-a-t'il une solution?
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 %}
(Je ne peux/ne veux pas utiliser scripts
和 styles
内的 list.html.twig
块。它们是数据表模板的一部分,在 list.html.twig
.).
Malheureusement, je ne peux pas utiliser use
car cette fonction ne prend pas en charge les propriétés dynamiques, uniquement les chaînes.
D'après la documentation :
Étant donné que les instructions d'utilisation sont analysées indépendamment du contexte transmis au modèle, les références de modèle ne peuvent pas être des expressions.
Comme mentionné dans les commentaires, les inclusions/intégrations ne peuvent pas modifier les blocs dans leurs inclueurs. Cela dit, une extension est disponible qui peut résoudre votre problème.
Ce
Fondamentalement, le nœud retarde l'exécution dudit bloc. De cette façon, vous pouvez créer une variable pour contenir tous les liens javascript et les afficher. Cela peut être vu dans les延迟的Twig扩展
peut être trouvéiciAdvancedExamples sur github.
Merci à Eugene Leonovich pour avoir réalisé cette extension