2012-08-04 14 views
5

Mam następujący obiekt żądania i chciałbym usunąć 'email_suffix' z kontrolera przed powiązaniem z formularzem. czy to możliwe?Jak mogę usunąć pojedynczy parametr z obiektu żądania 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) 

Próbowałem $request->request->remove("registration[email_suffix]");

mogę zrobić $ request-> request-> usunąć ("Rejestracja") - to działa.

Na razie robię to:

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

Czy chodziło Ci '$ request-> attributes-> get (...)'? –

+0

Twoje podejście (uzyskanie parametru rejestracji, usunięcie członka, którego nie chcesz i ponowne zapisanie) wydaje mi się w porządku. Jaki jest problem? –

+0

@CarlosGranados Chciałam tylko wiedzieć, że był na to lepszy sposób. Najwyraźniej nie ma. – codecowboy

Odpowiedz

1

Nie jestem pewien, czy rozmowa $request->request jest literówka.

Powinieneś pracować z $request->attributes, która reprezentuje klasę ParameterBag.

Jeśli przejdziesz przez metody w ParameterBag zobaczysz, że nie ma sposobu, aby usunąć zmienną wewnątrz tablicy.

+0

Dzięki. $ request-> request robi to samo. Dzięki za odpowiedź. – codecowboy

+0

możesz uzyskać parametry, unieważnić cokolwiek chcesz i użyć metody replace(), aby zaktualizować tor parametrów ... ale upvoting, ponieważ ta odpowiedź zaprowadziła mnie do tego, co chciałem –

8

Istnieje możliwość dodawania i usuwania parametrów z obiektu żądania w symfony2. Musisz spojrzeć na ParameterBag Component, jest taka metoda o nazwie remove($key), to jest to, czego potrzebujesz.

więc rozwiązanie dla Państwa życzenie byłoby tak, gdyby to nazwać od obiektu kontrolera:

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

Nice i działa dla Laravel 5.1 (ponieważ rozszerza klasę Żądania Symfony). Dzięki! –

+0

To jest ten, który działał dla Symfony 2.7; 'query', a nie' attributes'. W moim przypadku był to ciąg zapytania ("? Refresh") przechwyciłem w detektorze zdarzeń jądra i chciałem go usunąć przed wywołaniem kontrolera. – toddkaufmann

Powiązane problemy