【问题标题】:add fields with form events in symfony在 symfony 中添加带有表单事件的字段
【发布时间】:2021-10-30 19:29:32
【问题描述】:

我尝试在 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';
        }


    }

【问题讨论】:

  • 这只能通过Javascript来完成

标签: php symfony


【解决方案1】:

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

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

【讨论】:

猜你喜欢
  • 2017-04-22
  • 2017-06-25
  • 2014-06-23
  • 2017-06-09
  • 1970-01-01
  • 1970-01-01
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多