2014-02-27 95 views
0

我有一個標準的登錄表單,我用createFormBuilder()方法構建。當我嘗試 獲取輸入與symfony2請求對象get()函數

$this->get('request')->request->get('userName'); 

我收到NULL怎麼一回事,因爲這 - $>獲取(「要求」) - >請求是ParameterBag對象誰只與輸入值「形式」字段。所以,當我這樣做......

$this->get('request')->request->get('form') 

我得到想要的結果,但在一個陣列

array(
    'userName' => 'Dude', 
    'password' => 'password' 
); 

這是很好的,但在那裏獲取POST數據的更直觀的方式?

我發現這個StackOverflow answer但它沒有幫助。

我也嘗試使用Request對象作爲控制器方法中的參數,但沒有結果。

+0

這是怎麼回事*「不直觀」 *?你現在知道'request'包含'POST'數據。你想達到什麼目的? – Touki

+0

我3天前開始使用sympfony2,我記得我可以使用$ request-> get('userName')獲取數據。我知道沒有一種方法可以在symfony中做某些事情,所以我認爲還有另一種方法可以做到這一點。 –

+2

如果您試圖直接從請求對象獲取'userName',您可以執行'$ request-> request-> get('form [userName]',null,true)或$ request-> get 'form [userName]',null,true)'。調用'Request :: get'將查看'$ request-> query',然後'$ request-> attributes',然後'$ request-> request' – Touki

回答

0

基本上,我將首先驗證表單是否有效。然後,我將綁定表單對象並使用該表單來獲取一些數據。所以,代碼應該看起來像如下:

if ($request->getMethod('post') == 'POST') { 
     // Bind request to the form 
     $form->submit($request); 
     // If form is valid 
     if ($form->isValid()) { 
      // Get data from the userName field 
      $username = $form->get('userName')->getData();    
     } 
}