Bonjour,
Je poste aujourd'hui car je me trompe sur le mécanisme de render, de blocks et de la fonction parent() de twig.
Pour vous expliquer ce que je veux faire, je vous ais fait 1 schéma et 1 speudo-code.
Le code qui pose problème est dans le fichier block2.html.twig. Je ne comprend comment le construire. Je pense que le reste est bon.
layout.html.twig
adaptiveView.html.twig
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <head> {% block css %} ... {% endblock %} ... </head> <body> ... {% block site_body %}{% endblock %} ... {% block javascripts %} <script> ... </script> ... {% endblock %} </body>
block2.html.twig
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 {% extends '::base.html.twig' %} {# On remplit le block site_body #} {% block site_body %} {# la function fonctionBlock1Action dans le controller Machin va render block1.html.twig #} {{ render(controller('AcmeTrucBundle:Machin:fonctionBlock1')) }} {# la function fonctionBlock2Action dans le controller Machin va render block2.html.twig #} {{ render(controller('AcmeTrucBundle:Machin:fonctionBlock2')) }} {# la function fonctionBlock1Action dans le controller Machin va render block3.html.twig #} {{ render(controller('AcmeTrucBundle:Machin:fonctionBlock3')) }} {% endblock %}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 {% extends '::base.html.twig' %} {% block javascripts %} {{ parent() }} {# javascripts essentielle au fonctionnement de block2 #} ... {% endblock %} {# code du block2 #} {% block site_body %} {{ parent() }} {% endblock %}
Voici donc mes questions :
_ Comment construire le code du block2 ?
_ Il faut utiliser le la fonction parent() ? Je qu'il ne faut pas que je ré-appelle le bock site_body mais si je ne le fait pas j'ai une erreur à l'exécution car j'ai du code tout seul dans aucun block alors que je fais un extends d'un layout. Et pourtant je dois bien inclure l'ajout de code javascript ...
Suis-je clair ?
Merci d'avance,
Olivier
Partager