2012-07-08 66 views
0

這是我的形式如何實現事件監聽器到Symfony2上的單選按鈕?

public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder 
      ->add('nombreBD','text', array('required' => true, 'label' => 'Nombre Base de Datos: ')) 
      ->add('Servidor', 'choice', array(
          'choices' => array('1' => 'Si', '0' => 'No'), 
          'required' => true, 
          'multiple' => false, 
          'expanded' => true, 
          'label' => 'Servidor Existente?' 
       )) 
      ->add('ServidorBD','entity', 
        array ('class' => 'MonseWebBundle:ServidoresBD', 
         'multiple' => true, 
         'required' => true, 
         'label' => 'Servidor de Base de Datos: ', 
         'query_builder' => function(EntityRepository $er) { 
         return $er->createQueryBuilder('u') 
         ->orderBy('u.url', 'ASC'); 
                      }, 
         )) 
      ; 
    } 

和我想要做的是,如果用戶在單選按鈕,選擇「否」,則「ServidorBD」實體應該不會出現;它應該顯示而不是另一種形式(動態加載它或將用戶重定向到另一個URL)來添加一個新的。 由於我是Symfony2的新手,我不太明白如何將eventlistener附加到「單選按鈕」,也不知道如何在發生這種情況時顯示另一個表單而不是「ServidorBD」。

請幫助! T-T

回答

1

你想要做的是根據你將綁定到你的表單上的數據動態地創建你的表單。

在Symfony 2.0.x或2.1.x中,表單組件在綁定數據之後無法更改表單結構。這將在Symfony 2.2中完成。

看到這個問題:https://github.com/symfony/symfony/issues/3767

所以,目前,您不能使用表單事件偵聽器來歸檔這個用例。

+0

好的,反正有嗎?我的意思是,我如何知道是否選擇了單選按鈕?是否可以隱藏「ServidorBD」位以防萬一?或者是否可以將該選項添加到列表中以「添加」新的ServidorBD?我真的需要以某種方式做到這一點:( – Splendonia 2012-07-08 15:19:24