2012-08-04 16 views
5

Tengo el siguiente objeto de solicitud y me gustaría eliminar 'email_suffix' de un controlador antes de vincularlo a un formulario. es posible?Cómo puedo eliminar un parámetro individual de un objeto de solicitud de Symfony2

public 'request' => 
    object(Symfony\Component\HttpFoundation\ParameterBag)[8] 
     protected 'parameters' => 
     array 
      'registration' => 
      array 
       'email' => string 's' (length=1) 
       'email_suffix' => string 'y.com' (length=5) 
       'password' => string '1234' (length=4) 
       '_token' => string '967d99ba9f955aa67eb9eb004bd331151d816d06' (length=40) 
      'product_id' => string '2' (length=1) 
      'product_description' => string '12 month membership' (length=19) 
      'product_price' => string '6.99' (length=4) 

He tratado $request->request->remove("registration[email_suffix]");

que puedo hacer $ request-> request-> remove ("registro") - esto funciona.

Por ahora, estoy haciendo esto:

$requestReg = $request->request->get('registration'); 
$requestReg['email'] = $requestReg['email'].'@'.$requestReg['email_suffix']; 
unset($requestReg['email_suffix']); 
$request->request->set('registration',$requestReg); 
+0

Quizás quiso decir '$ request-> atributos-> get (...)'? –

+0

Su enfoque (obtener el parámetro de registro, eliminar el miembro que no desea y guardarlo de nuevo) me parece bien. ¿Cuál es el problema? –

+0

@CarlosGranados Solo quería saber si había una forma más limpia de hacerlo. Aparentemente no hay. – codecowboy

Respuesta

1

No estoy seguro, si su llamada es $request->request error tipográfico.

Debe operar con $request->attributes que representa la clase ParameterBag.

Si revisa los métodos en ParameterBag, verá que no hay forma de deshacer la variable dentro de la matriz.

+0

Gracias. solicitud $ request-> hace lo mismo. Gracias por tu respuesta. – codecowboy

+0

puedes obtener los parámetros, desarmar lo que quieras y usar el método replace() para actualizar la bolsa de parámetros ... pero votando, porque esta respuesta me llevó a lo que quería –

8

Existe la posibilidad de agregar y eliminar los parámetros del objeto de solicitud en symfony2. Tienes que mirar ParameterBag Component, existe tal método llamado remove($key), eso es lo que necesitas.

Así que la solución para su petición iba a ser así, si se llama desde objeto controlador:

$this->get('request')->query->remove('email_suffix'); 
+1

Bueno y funciona para Laravel 5.1 (ya que extiende la clase de Solicitud de Symfony) ¡Gracias! –

+0

Este es el que funcionó para Symfony 2.7; 'query', no' attributes'. En mi caso, esta era una cadena de consulta ("? Refresh") que estaba interceptando en un procesador de eventos kernel y quería eliminarlo antes de que se llamara al controlador. – toddkaufmann

Cuestiones relacionadas