根据Symfony 5中另一个字段中的用户选择值动态填充字段

马来罗伊

我正在尝试从“ https://symfony.com/doc/current/form/dynamic_form_modification.html#form-events-submitted-data ”这一边“根据Symfony 5中另一个字段中的用户选择动态更新字段” 。但是我遇到了这个异常/错误“传递给App \ Form \ SportMeetupType :: App \ Form {closure}()的参数2必须是App \ Form \ Sport的实例,或者为null,给定的App \ Entity \ Sport实例称为调用ajax时,在58行的C:\ Apache24 \ htdocs \ dynamicform \ src \ Form \ SportMeetupType.php中。

我的代码:

形式:

class SportMeetupType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name')

            ->add('sport', EntityType::class, [
                'class'       => 'App\Entity\Sport',
                'placeholder' => '',
            ])

        ;


        $formModifier = function (FormInterface $form, Sport $sport = null) {
            $positions = null === $sport ? [] : $sport->getPositions();

            $form->add('position', EntityType::class, [
                'class' => 'App\Entity\Position',
                'placeholder' => '',
                'choices' => $positions,
            ]);
        };

        $builder->addEventListener(
            FormEvents::PRE_SET_DATA,
            function (FormEvent $event) use ($formModifier) {
                // this would be your entity, i.e. SportMeetup
                $data = $event->getData();

                $formModifier($event->getForm(), $data->getSport());
            }
        );

        $builder->get('sport')->addEventListener(
            FormEvents::POST_SUBMIT,
            function (FormEvent $event) use ($formModifier) {
                // It's important here to fetch $event->getForm()->getData(), as
                // $event->getData() will get you the client data (that is, the ID)
                $sport = $event->getForm()->getData();

                // since we've added the listener to the child, we'll have to pass on
                // the parent to the callback functions!
                $formModifier($event->getForm()->getParent(), $sport);  // Here line 58 and error show this line
            }
        );

    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => SportMeetup::class,
        ]);
    }
}

控制器:

/**
 * @Route("/new", name="sport_meetup_new", methods={"GET","POST"})
 */
public function new(Request $request): Response
{
    $sportMeetup = new SportMeetup();
    $form = $this->createForm(SportMeetupType::class, $sportMeetup);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
        $entityManager = $this->getDoctrine()->getManager();
        $entityManager->persist($sportMeetup);
        $entityManager->flush();

        return $this->redirectToRoute('sport_meetup_index');
    }

    return $this->render('sport_meetup/new.html.twig', [
        'sport_meetup' => $sportMeetup,
        'form' => $form->createView(),
    ]);
}

树枝/视图:

{% extends 'base.html.twig' %}

{% block title %}New SportMeetup{% endblock %}

{% block body %}
    <h1>Create new SportMeetup</h1>

   {{ form_start(form) }}
    {{ form_row(form.name)}}
    {{ form_row(form.sport) }}    {# <select id="sport_meetup_sport" ... #}
    {{ form_row(form.position) }} {# <select id="sport_meetup_position" ... #}
    {# ... #}
{{ form_end(form) }}


{% endblock %}

JavaScript代码:

var $sport = $('#sport_meetup_sport');
// When sport gets selected ...
$sport.change(function() {

  // ... retrieve the corresponding form.
  var $form = $(this).closest('form');

  // Simulate form data, but only include the selected sport value.
  var data = {};
  data[$sport.attr('name')] = $sport.val();
  // Submit data via AJAX to the form's action path.
  $.ajax({
    url : $form.attr('action'),
    type: "POST",
    data : data,
    success: function(html) {

      // Replace current position field ...
      $('#sport_meetup_position').replaceWith(
        // ... with the returned one from the AJAX response.
        $(html).find('#sport_meetup_position')
      );
      // Position field now displays the appropriate positions.
    }
  });
});

更改“运动”下拉列表值后,将调用ajax并显示以下异常/错误“传递给App \ Form \ SportMeetupType :: App \ Form {closure}()的参数2必须是App \ Form \ Sport的实例,或者为null,App的实例\ Entity \ Sport,在第58行的C:\ Apache24 \ htdocs \ dynamicform \ src \ Form \ SportMeetupType.php中调用

请帮我....

大卫

确保在SportMeetupType.php中具有:

use App\Entity\Sport;

我认为您使用的是错误的课程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Symfony 2-根据在另一个字段中的选择动态隐藏字段

来自分类Dev

如何根据另一个字段中的值在一个字段中查找和替换?

来自分类Dev

根据MongoDB中的另一个字段有选择地返回一个字段

来自分类Dev

使用SQL根据记录中的另一个字段检索组合记录的字段值

来自分类Dev

根据流中的另一个字段汇总字段

来自分类Dev

根据文档中的另一个字段更新字段

来自分类Dev

根据流中的另一个字段汇总字段

来自分类Dev

在每个行组中,根据另一个字段比较日期字段

来自分类Dev

MS ACCESS-根据另一个字段的条件从表中动态检索记录

来自分类Dev

Django ORM:根据一个字段值动态确定另一个表名

来自分类Dev

根据另一个字段更新一个字段的值

来自分类Dev

创建一个字段,该字段可以存储根据另一个文件中的值计算得出的值

来自分类Dev

根据同一模型中的另一个字段保存模型中的字段。姜戈

来自分类Dev

Django根据另一个字段的值验证字段

来自分类Dev

JSON模式条件:根据另一个字段的值,该字段是必需的

来自分类Dev

如何根据另一个字段计算字段值?

来自分类Dev

Bootstrap x-editable:根据另一个字段的值验证字段

来自分类Dev

根据同一工厂中另一个字段中设置的数字创建工厂字段值

来自分类Dev

Django根据模型中的另一个字段列出一个字段分组列表

来自分类Dev

根据MongoDB文档中的另一个字段更新一个字段(在Node.js中使用Mongoose)

来自分类Dev

根据另一个字段中的变量获取一个字段中值的平均值

来自分类Dev

根据MongoDB文档中的另一个字段更新一个字段(在Node.js中使用Mongoose)

来自分类Dev

如何根据另一个字段的内容替换文件中的特定字段?

来自分类Dev

如何根据另一个字段的内容替换文件中的特定字段?

来自分类Dev

Laravel 根据另一个字段从表中选择随机行

来自分类Dev

熊猫数据框根据另一个字段的条件更改值

来自分类Dev

根据另一个字段的值验证 JSON 数据

来自分类Dev

symfony验证另一个字段是否为特定值

来自分类Dev

如何在FOSUserBundle中的另一个字段Symfony 2.7中添加注册表单

Related 相关文章

  1. 1

    Symfony 2-根据在另一个字段中的选择动态隐藏字段

  2. 2

    如何根据另一个字段中的值在一个字段中查找和替换?

  3. 3

    根据MongoDB中的另一个字段有选择地返回一个字段

  4. 4

    使用SQL根据记录中的另一个字段检索组合记录的字段值

  5. 5

    根据流中的另一个字段汇总字段

  6. 6

    根据文档中的另一个字段更新字段

  7. 7

    根据流中的另一个字段汇总字段

  8. 8

    在每个行组中,根据另一个字段比较日期字段

  9. 9

    MS ACCESS-根据另一个字段的条件从表中动态检索记录

  10. 10

    Django ORM:根据一个字段值动态确定另一个表名

  11. 11

    根据另一个字段更新一个字段的值

  12. 12

    创建一个字段,该字段可以存储根据另一个文件中的值计算得出的值

  13. 13

    根据同一模型中的另一个字段保存模型中的字段。姜戈

  14. 14

    Django根据另一个字段的值验证字段

  15. 15

    JSON模式条件:根据另一个字段的值,该字段是必需的

  16. 16

    如何根据另一个字段计算字段值?

  17. 17

    Bootstrap x-editable:根据另一个字段的值验证字段

  18. 18

    根据同一工厂中另一个字段中设置的数字创建工厂字段值

  19. 19

    Django根据模型中的另一个字段列出一个字段分组列表

  20. 20

    根据MongoDB文档中的另一个字段更新一个字段(在Node.js中使用Mongoose)

  21. 21

    根据另一个字段中的变量获取一个字段中值的平均值

  22. 22

    根据MongoDB文档中的另一个字段更新一个字段(在Node.js中使用Mongoose)

  23. 23

    如何根据另一个字段的内容替换文件中的特定字段?

  24. 24

    如何根据另一个字段的内容替换文件中的特定字段?

  25. 25

    Laravel 根据另一个字段从表中选择随机行

  26. 26

    熊猫数据框根据另一个字段的条件更改值

  27. 27

    根据另一个字段的值验证 JSON 数据

  28. 28

    symfony验证另一个字段是否为特定值

  29. 29

    如何在FOSUserBundle中的另一个字段Symfony 2.7中添加注册表单

热门标签

归档