2012-08-04 13 views
5

Ho il seguente oggetto richiesta e desidero rimuovere "email_suffix" da un controller prima di collegarlo a un modulo. È possibile?Come rimuovere un singolo parametro da un oggetto richiesta 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) 

ho cercato $request->request->remove("registration[email_suffix]");

posso fare $ request-> request-> rimuovere ("registrazione") - questo funziona.

Per ora, sto facendo questo:

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

Forse cercavi '$ request-> attributes-> get (...)'? –

+0

Il tuo approccio (ottenere il parametro di registrazione, cancellare il membro che non vuoi e salvarlo di nuovo) mi sembra a posto. Qual è il problema? –

+0

@CarlosGranados Volevo solo sapere che c'era un modo più pulito per farlo. Apparentemente non c'è. – codecowboy

risposta

1

non sono sicuro, se la chiamata è $request->request errore di battitura.

Si dovrebbe operare con $request->attributes che rappresenta la classe ParameterBag.

Se passerai attraverso i metodi in ParameterBag vedrai che non c'è modo di annullare la variabile all'interno dell'array.

+0

Grazie. $ request-> request fa la stessa cosa. Grazie per la tua risposta. – codecowboy

+0

puoi ottenere parametri, disinserire tutto quello che vuoi e usare il metodo replace() per aggiornare il parametro bag ... ma upvoting, perché questa risposta mi ha portato a quello che volevo –

8

C'è la possibilità di aggiungere e rimuovere i parametri dall'oggetto richiesta in symfony2. Devi guardare ParameterBag Component, c'è il metodo chiamato remove($key), questo è quello che ti serve.

Quindi la soluzione per la vostra richiesta sarebbe come questo, se si chiama da oggetto controller:

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

Bella e funziona per Laravel 5.1 (dato che estende la classe Request di Symfony). Grazie! –

+0

Questo è quello che ha funzionato per Symfony 2.7; 'query', non' attributes'. Nel mio caso si trattava di una stringa di query ("? Refresh") che stavo intercettando in un listener di eventi del kernel e volevo rimuoverlo prima che il controller venisse chiamato. – toddkaufmann

Problemi correlati