在symfony中添加带有表单事件的字段

时间:2018-09-12 09:47:03

标签: php symfony

我尝试在symfony中添加带有表单事件的字段,但是刷新页面时会自动添加字段...场景是当我填写输入电子邮件字段的正文时显示的情况...

代码PostType:

<?php

    namespace AppBundle\Form;

    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilderInterface;
    use Symfony\Component\OptionsResolver\OptionsResolver;
    use Symfony\Component\Form\Extension\Core\Type\SubmitType;
    use Symfony\Component\Form\FormEvent;
    use Symfony\Component\Form\FormEvents;

    class PostType extends AbstractType
    {
        /**
         * {@inheritdoc}
         */
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder->add('titl')->add('email')->add('phone');
            $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event){
                $post = $event->getData();
                $form = $event->getForm();
                   if(!empty($post->getEmail))
                   {
                     $form->add('body');
                   }

                });
            $builder->add('save', SubmitType::class);
        }/**
         * {@inheritdoc}
         */
        public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'AppBundle\Entity\Post'
            ));
        }

        /**
         * {@inheritdoc}
         */
        public function getBlockPrefix()
        {
            return 'appbundle_post';
        }


    }

请帮助我,谢谢高级

1 个答案:

答案 0 :(得分:0)

正如评论中所说,您必须使用Javascript来执行此操作,例如,提出ajax请求以提交表单并始终以javascript形式应用HTML响应。

有一个很棒的视频教程(法语)https://www.youtube.com/watch?v=F0Z-D3MSjA0&t=1504s