Bonjour à tous,
Je suis à la recherche de conseils pour découper mon code sur SF2. (Pour information, je suis un développeur PHP confirmé mais débutant sur cette techno)
Je vous expose mon problème :
Sur mon application, il y a un bloc qui se répète à plusieurs endroits sur la même page (avec des données récupérées via Doctrine).
Je vais prendre l'exemple de ma home page qui utilise indexAction() et le template index.html.twig
1. J'ai tout d'abord utilisé :
Comme je m'en doutais blockAction() est exécuté 2 fois, et donc les requêtes également ! J'ai réalisé mes tests en mode dev, il est possible que SF2 gère ce problème avec du cache en mode prod... N'hésitez à me reprendre si je fais fausse route
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 {# index.html.twig #} {{ render(controller("Bundle:Controller:block")) }}
2. J'ai ensuite testé un autre découpage :
Avec une inclusion simple et en transmettant mes données depuis indexAction()
J'arrive à m'en sortir (les variables sont accessibles dans le template inclus bloc.html.twig), mais je n'aime pas trop cette solution car il faut que je transmette les données sur toutes les pages.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 {# index.html.twig #} {% include "@Bundle/block.html.twig" %}
Je ne connais pas les best practices... Peut être que ce que je fais est une hérésie !
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 /* Pour indexAction() */ return $this->render( 'Bundle:index.html.twig', array( 'data' => $this->getData(), ) ); /* Pour pageXAction() */ return $this->render( 'Bundle:pagex.html.twig', array( 'data' => $this->getData(), ) ); /* NB : getData() récupère mes données via Doctrine */
Et vous, comment faites-vous quand vous êtes confronté à ce problème ?
Merci d'avance pour vos retours.
Bon début de semaine à tous !
Partager