J'ai un contrôleur dans une application Symfony 2.1, appelons-le FooController
dans le BarBundle
. Ce contrôleur a beaucoup d'actions fooAction
, barAction
, bazAction
et quelques autres.Ajouter des données pour retourner toutes les actions dans un contrôleur Symfony
Tous ont quelque chose en commun. Ils affichent dans certaines parties les mêmes données dans la vue, pas dans tous, donc je ne peux pas utiliser une seule action avec le type comme paramètre. Je voudrais ajouter les données qui doivent être transmises à la vue dans un endroit central, sinon, ce ne serait pas sec.
Bad (à mon avis):
public function fooAction() {
// ...
return $this->render('BarBundle:Foo:foo.html.twig', array('foo' => 'Foo Data', 'data' => $this->getTheDataThatIsNeededInEveryAction()));
}
public function barAction() {
// ...
return $this->render('BarBundle:Foo:bar.html.twig', array('bar' => 'Bar Data', 'data' => $this->getTheDataThatIsNeededInEveryAction()));
}
public function bazAction() {
// ...
return $this->render('BarBundle:Foo:baz.html.twig', array('baz' => 'Baz Data', 'data' => $this->getTheDataThatIsNeededInEveryAction()));
}
Ce que je me demande maintenant, est, ce serait la façon "bonne"? Y a-t-il une fonction finished
dans le contrôleur parent qui est appelée juste avant d'envoyer les données à la vue, où je pourrais ajouter ces données à l'objet réponse?
Une autre possibilité serait, pour créer un écouteur d'événement, mais je pense que ce serait un gaspillage de ressources.
Une troisième option serait d'utiliser la fonction render comme {% render url('latest_articles', { 'max': 3 }) %}
Je sais que de nos jours il est {{ render(controller(..)) }}
mais je suis coincé avec Symfony 2.1 avec ce projet.
Nice, je n'y ai pas encore pensé. Je vais essayer. – wawa