Maison > Questions et réponses > le corps du texte
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.
P粉3333954962023-12-21 11:48:45
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延迟的Twig扩展
peut être trouvéici
AdvancedExamples sur github.
Merci à Eugene Leonovich pour avoir réalisé cette extension