2015-11-27 239 views
2

我想從控制器的下拉列表中選擇一個選項。我正在嘗試以下一段代碼:選擇下拉選項選項

$form = $this->createForm(new SearchAdvancedType()); 
$form->get('option')->setData($session->get('option')); 

但是它在下拉列表中沒有任何操作。頁面加載時沒有選擇任何內容。

要檢查是否值設定好我打印使用:

$form->get('brand')->Data(); 

,結果是一個數字(這取決於什麼,我在下拉之前選用的變化)。

我需要知道如何正確選擇下拉列表的值。

回答

2

要預設選擇選項,我會將值傳遞給表單。

class MyFormType extends AbstractType 
{ 

    /** 
    * @param FormBuilderInterface $builder 
    * @param array $options 
    */ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('type', 'choice', [ 
       'required' => true, 
       'choices' => ['yes' => 'Yes', 'no' => 'No'], 
       'data' => $options['select_option'] 
      ]) 
     ; 
    } 

    /** 
    * @param OptionsResolver $resolver 
    */ 
    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => null, 
      'select_option' => null 
     )); 
    } 

    /** 
    * @return string 
    */ 
    public function getName() 
    { 
     return 'my_form'; 
    } 

} 

然後在你的控制器中傳遞值;

$form = $this->createForm(new MyFormType(), null, ['select_option' => 'no');