2012-07-08 35 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