2012-06-27 19 views
55

En Symfony 2 controladores, cada vez que quiere conseguir un valor de post que se necesita para ejecutar:Conseguir todos los parámetros de la petición en Symfony 2

$this->getRequest()->get('value1'); 
$this->getRequest()->get('value2'); 

¿Hay alguna manera de consolidarlas en una sola declaración que devolvería ¿una matriz? Algo así como Zend's getParams()?

Respuesta

121

Puede hacer $this->getRequest()->query->all(); para obtener todos los parámetros GET y $this->getRequest()->request->all(); para obtener todos los parámetros POST.

Así, en su caso:

$params = $this->getRequest()->request->all(); 
$params['value1']; 
$params['value2']; 

Para obtener más información sobre la clase de solicitud, consulte http://api.symfony.com/2.8/Symfony/Component/HttpFoundation/Request.html

+7

para obtener los valores de los parámetros de la ruta (por ejemplo, mensajes// { id}) use '$ request-> attributes-> all() '. Estaba usando el pensamiento '$ request-> get()' que era la única forma de obtener estos datos y vine aquí buscando otra forma. – Dreen

+1

Acabas de guardar un montón de tipos !!! : D –

+0

Esto no funciona con multipart/form-data. –

6

Con Symfony recientes versiones 2.6+ como una mejor práctica de solicitud se pasa como argumento a la acción en ese caso de que no tendrá que llamar explícitamente $ this-> getRequest(), sino más bien llamar $ request-> request-> todo()

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; 
use Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException; 
use Symfony\Component\HttpFoundation\RedirectResponse; 

    class SampleController extends Controller 
    { 


     public function indexAction(Request $request) { 

      var_dump($request->request->all()); 
     } 

    }