Forms 自定义FormBuilderInterface Symfony 3

Forms 自定义FormBuilderInterface Symfony 3,forms,symfony,Forms,Symfony,我在symfony上找到了FormType: public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('statement', TextType::class, array( 'label' => 'Enunciado:', "required"=>"required", "attr"

我在symfony上找到了FormType:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('statement', TextType::class, array(
            'label' => 'Enunciado:',
            "required"=>"required", "attr"=>array(
                "class" => "form-name form-control"
            )))
        ->add('period', ChoiceType::class, array(
            'label' => 'Periodo:',
            'choices'  => array(
                '2017-2018' => "1718",
                '2018-1029' => "1819"
            ),
            "required"=>"required", "attr"=>array(
                "class" => "form-name form-control"
            )))
        ->add('questiontype', ChoiceType::class, array(
            'label' => 'Tipo de pregunta:',
            'choices'  => array(
                'Test' => "test",
                'Relacion' => "relacion",
                'Desarrolo' => "desarrollo",
                'Verdadero-Falso' => "truefalse",
            ), "attr"=>array(
                "class" => "form-password form-control"
            )))
        ->add('image', FileType::class, array('label' => 'Añadir imagen'))
        ->add('Registrar',SubmitType::class, array("attr"=>array(
            "class" => "form-submit btn btn-success"
        )));
}
我想让文件类型输入可见,以防他们选择“Desarro”

有什么办法吗? 我在考虑使用一些javascript,但如果我使用FormBuilder,我不知道该怎么做


有什么帮助吗?谢谢。

是的,您可以查看此官方文件

我认为您应该使用两种形式的事件:

  • 预设数据:如果问题类型已设置为“Desarro”,则显示您的
    文件类型
  • PostSubmit:用于在表单提交后添加
    文件类型
也许是这样的:

$builder->addEventSubscriber(new AddFileFieldPreSetDataSubscriber());

$builder->get('questiontype')->addEventSubscriber(new AddFileFieldPostSubmitSubscriber());