2012-08-04 3 views
5

Ich habe das folgende Anfrageobjekt und möchte 'email_suffix' von einem Controller entfernen, bevor ich an ein Formular binde. Ist das möglich?Wie kann ich einen einzelnen Parameter aus einem Symfony2-Anfrageobjekt entfernen?

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) 

Ich habe $request->request->remove("registration[email_suffix]"); versucht

ich tun kann, $ request-> request-> entfernen ("Registrierung") - das funktioniert.

Vorerst ich dies tue:

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

Sie '$ Meinten request-> Attributen-> get (...)'? –

+0

Ihr Ansatz (den Registrierungsparameter zu erhalten, das Mitglied zu löschen, das Sie nicht wollen und es wieder zu speichern) scheint mir gut zu sein. Was ist das Problem? –

+0

@CarlosGranados Ich wollte nur wissen, ob es einen saubereren Weg gab, es zu tun. Anscheinend gibt es das nicht. – codecowboy

Antwort

1

Ich bin nicht sicher, ob Ihr Anruf $request->request Tippfehler ist.

Sie sollten mit $request->attributes arbeiten, was ParameterBag Klasse darstellt.

Wenn Sie Methoden in durchlaufen werden Sie sehen, dass es keine Möglichkeit gibt, Variable innerhalb Array zu deaktivieren.

+0

Danke. $ request-> request macht dasselbe. Danke für deine Antwort. – codecowboy

+0

Sie können Parameter erhalten, Unscharfes, was Sie wollen, und verwenden Sie replace() -Methode, um Parameterbeutel zu aktualisieren ... aber Upvoting, denn diese Antwort führte mich zu dem, was ich wollte –

8

Es gibt die Möglichkeit, die Parameter aus dem Anfrageobjekt in symfony2 hinzuzufügen und zu entfernen. Sie müssen sich ParameterBag Component ansehen, es gibt so eine Methode namens remove($key), das ist was Sie brauchen.

So ist die Lösung für Ihre Anfrage so sein würde, wenn Sie es von Controller-Objekt aufrufen:

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

Schön und funktioniert für Laravel 5.1 (da es Symfony Request-Klasse erweitert). Vielen Dank! –

+0

Dies ist der, der für Symfony 2.7 funktioniert hat; 'query', nicht' attributes'. In meinem Fall war dies eine Abfragezeichenfolge ("? Refresh"), die ich in einem Kernel-Event-Listener abfangen wollte und sie entfernen wollte, bevor der Controller aufgerufen wurde. – toddkaufmann

Verwandte Themen