Symfony 4 FormEvent侦听器中的表单字段顺序

时间:2018-10-16 08:40:54

标签: forms symfony4

我一直在努力做到这一点。在文档中,似乎没有任何选项可以订购表单字段。

因此,我的表单中有这样的名字和姓氏字段:

->add('firstname', TextType::class, [
      'required' => true
])
->add('address', TextareaType::class, [
      'required' => true
])

然后,我像这样添加了一个事件侦听器:

$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
     $plan = $event->getData();
     $form = $event->getForm();

     if (!$plan->getReferenceId()) {
        $form->add('ref', TextType::class, [
              'label' => 'Reference Number',
              'required' => true,
              // position should be after the firstname and before address
        ]);
     }
}

在某些线程中,可以添加一个“位置”属性,但这是针对Symfony 2的,并且现在在S4中不存在。

我想这可以在细枝form_widget中完成,但是我正在使用细枝模板,该模板也以其他形式使用。因此,我希望尽可能以表格类型完成此操作。

1 个答案:

答案 0 :(得分:0)

这似乎是Symfony github上确实需要解决的问题 此处:https://github.com/symfony/symfony/issues/5827 在这里:https://github.com/symfony/symfony/pull/11241#issuecomment-288462731,Fabien个人拒绝了PR的可能解决方案

我有同样的问题,看来唯一的解决方案是在模板上依次用form_row或form_widget手动打印字段。 像这样:https://symfony.com/doc/current/form/form_customization.html