Qu’est-ce qu’un controller ?
Au sein d’une application en symfony, un controller est le chef d’orchestre. Il est chargé de demander la récupération de données, de les organiser si besoin, et de récupérer l’affichage final de la page avant de l’envoyer à l’utilisateur.
Comme je vous ai donné un exemple simple dans le billet précédent, je me permettrai de ne pas le redonner. Notez toutefois qu’il peut, selon le format (la variable _format pour être précis) demandé par le routeur (ou tout simplement s’il est défini comme tel), renvoyer les données en HTML, JSON ou tout autre format que l’on souhaite.
Et comment fonctionne-t-il ?
Très simplement. Suivant le système d’injection de dépendance de Symfony2, le controller dispose d’un accès au « service container » et peut donc faire appelle à divers services définis dans notre application. Les plus courants étant la base de données et le moteur de template.
Pour nous simplifier encore la vie, un controller héritant de la classe Controller possède des méthodes raccourci, $this->getDoctrine() et $this->render() pour, respectivement, accéder au service de Doctrine (la base de données) et notre moteur de template (Twig par défaut).
Mon controller est-il obligé d’étendre la classe Controller ?
Aucunement. Toutefois, afin d’utiliser le moteur de template et la base de données, il est nécessaire qu’il étende au moins la classe ContainerAware ou implémente l’interface ContainerAwareInterface.
Le principal avantage à étendre la classe Controller :
Sans l’utiliser :
$engine = $this->container->get(‘templating’);
$content = $engine->render(‘BiduleTestBundle:Test:bidule.html.twig’);
return $response = new Response($content);
En l’utilisant :
return $this->render(‘AcmeArticleBundle:Article:index.html.twig’);
C’est quand même un peu plus court, mais à peine moins compliqué. Du coup, c’est à vous de voir !
C’est bien joli tout ça, mais comment je me sers de ma base de données ?
Eh bien, il se trouve que tout cela fera partie du prochain article, dédié aux entités.







I needed to csoopme you the bit of observation in order to give many thanks as before just for the nice pointers you’ve documented in this case. This is simply generous of you to convey without restraint exactly what most people would’ve made available as an e-book in order to make some bucks for their own end, mostly seeing that you might well have tried it in case you desired. These strategies as well served to provide a great way to be certain that many people have a similar desire just like mine to understand whole lot more when it comes to this condition. I know there are numerous more pleasurable instances ahead for those who scan through your website.