2012-08-04 56 views
5

我有以下請求對象,並想在綁定到表單之前從控制器中刪除「email_suffix」。這可能嗎?如何從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) 

我已經試過$request->request->remove("registration[email_suffix]");

我可以做$請求 - >請求 - >刪除( 「登記」) - 這個工程。

現在,我這樣做:

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

您的意思是'$請求 - >屬性 - > GET(...)'? – 2012-08-04 12:24:46

+0

你的方法(獲取註冊參數,刪除不想要的成員並再次保存)對我來說似乎很好。問題是什麼? – 2012-08-05 22:57:44

+0

@CarlosGranados我只是想知道是否有更乾淨的方式來做到這一點。顯然沒有。 – codecowboy 2012-08-06 07:42:12

回答

1

我不知道,如果你的電話$request->request是錯字。

您應該使用$request->attributes代表ParameterBag類。

如果您將通過ParameterBag中的方法,您會發現無法取消設置數組內的變量。

+0

謝謝。 $ request-> request做同樣的事情。感謝您的回答。 – codecowboy 2012-08-06 07:42:35

+0

你可以得到參數,取消任何你想要的,並使用replace()方法來更新參數包...但upvoting,因爲這個答案帶領我到我想要的東西 – 2014-07-01 09:56:41

8

可以在symfony2中添加和刪除請求對象中的參數。 你必須看ParameterBag Component,有這樣的方法稱爲remove($key),這就是你需要的。

因此,對於你的要求的解決辦法是這樣的,如果從控制器對象調用它:

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

不錯的一個和適用於Laravel 5.1(因爲它擴展了Symfony的Request類)。謝謝! – 2015-07-22 15:52:29

+0

這是爲Symfony 2.7工作的那個; 'query',而不是'attributes'。 在我的情況下,這是一個查詢字符串(「?refresh」),我在內核事件監聽器中攔截,並希望在調用控制器之前將其刪除。 – toddkaufmann 2016-05-24 18:16:58