2016-06-15 74 views
1

我試圖用Symfony實現簡單的搜索表單,並試圖訪問控制器內的POST值,但沒有成功。Symfony不返回POST值價值

我控制器內部下面的代碼:

public function foodAction(Request $request) 
{ 

    $defaultData = array('message' => 'Type your message here'); 

    $form = $this->createFormBuilder($defaultData) 
     ->add('keyword', SearchType::class, array('attr' => array('class' => 'form-control', 'placeholder' => 'Ruokahaku'), 'label' => false)) 
     ->add('search', SubmitType::class, array('attr' => array('class' => 'btn btn-secondary'), 'label' => 'Hae')) 
     ->getForm(); 

    $form->handleRequest($request); 

    if($form->isValid()) { 

     $searchName = $request->request->get('keyword'); 

     return $this->render(
      'default/index.html.twig', 
      array('foodsearched' => $searchName, 
      'form' => $form->createView()) 
     ); 
    } 

    return $this->render('default/index.html.twig', array(
     'form' => $form->createView() 
    )); 

} 

然而$ searchName總是空,即使

var_dump($request->request->get('form')); 

返回此:

array(3) { ["keyword"]=> string(6) "potato" ["search"]=> string(0) "" ["_token"]=> string(43) "2KIt0IYl3Ay-4vr-dEINKe3QNRxvMqmAFK1ILGflwoA" } 

這意味着變量存在。但$ searchName始終保持爲NULL。 這使我感到厭煩,因爲這個例子與Symfony的書(版本3.1,156-157頁)差不多。可能是什麼問題呢?

回答

0

你應該使用檢索表格數據(如數組):

$data = $form->getData(); 

如果你想獲取自定義值,如keyword,嘗試:

$keyword = $form->get('keyword')->getData(); 
+0

這並獲得成功:) 非常感謝你!我需要控制器內的自定義值,因爲我使用關鍵字從數據庫中搜索內容。 – user3629146