【问题标题】:Symfony2 - Keep form validation after modifying field in SUBMIT eventSymfony2 - 在提交事件中修改字段后保持表单验证
【发布时间】:2016-01-01 09:18:51
【问题描述】:

我需要在 SUBMIT 表单事件中修改一个字段,但是当我这样做时,该字段上的任何验证规则都丢失了。

这就是表单类型中发生的所有事情(标题字段实际上并没有被更改,我只是将其用作示例):

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add("title");

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

        $form->add("title");
    });
}

“title”的任何验证规则现在都丢失了,无论是使用实体定义的注释规则还是使用单独的验证器类。

我可以做任何事情来保持验证,还是打算不对在 SUBMIT 事件中修改的字段运行验证规则?

【问题讨论】:

    标签: symfony


    【解决方案1】:

    在这种情况下,您实际上并没有修改一个字段,而是使用$form->add('title') 添加一个新字段,它将替换表单中现有的“标题”字段(这就是验证约束消失的原因)。您可能想查看validation groups 以了解您的目标功能类型,除非您想详细说明您在提交事件中所做的事情?

    【讨论】:

    • 需要在提交事件中修改该字段的原因是因为它最初是作为实体字段添加的,但选项为空(为了加快表单加载速度)。然后我在提交事件中重新添加该字段以添加所有可能的选择,以便接受数据。我尝试更改为使用验证组,但没有成功。
    • 你在说什么速度——数据库速度、渲染速度、选择速度?
    【解决方案2】:

    如果您可以处理FormEvents::POST_SUBMIT 事件而不是FormEvents::SUBMIT,您将保留验证。您需要确保侦听器位于要编辑的子表单上,否则您将遇到无法将字段添加到已提交表单的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-02
      • 1970-01-01
      • 2019-12-04
      • 2019-06-15
      • 1970-01-01
      相关资源
      最近更新 更多