lundi 2 juin 2014

Accéder au service Request dans une action

Pour accéder au service Request dans une action Symfony2, vous avez plusieurs solutions :
  1. $this->getRequest()
  2. $this->get('request')
  3. paramètre à l'action de type Symfony\Component\HttpFoundation\Request 
La méthode 1 est dépréciée depuis Symfony 2.4.0, et sera supprimée dans Symfony 3.0.0.
A éviter, donc.

La méthode 2 est très bien, fonctionne, et est utilisable dans toutes les versions de Symfony2.

La méthode 3 est conseillée, car elle évite de repasser par ContainerInterface pour récupérer un service, et sera la façon conseillée de récupérer Request dans Symfony 3.0.0.
Pour utiliser cette façon de faire, il suffit d'ajouter un paramètre à votre action, de type Symfony\Component\HttpFoundation\Request. Quand votre action sera appelée, si l'un des paramètres (n'importe lequel) est de ce type, il sera automatiquement remplacé par le service request.

<?php namespace Foo\Bar\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; class MoocController extends Controller { public function fooAction($requiredParam, $optionalParameter = true, Request $request = null, $optionalParameter2 = false) { } }
Merci à Guillaume Patton !

Aucun commentaire:

Enregistrer un commentaire