Symfony 2形成额外的字段



我通过AJAX更改了一些字段,当我试图保存表单时,我收到了一个错误Extra fields are not allowed

如何更改验证器属性,如sf1.4中的validatorPass()
或者它可能会更改表单以接受额外的字段?

我正在使用SonataAdminBundle创建表单。

在将额外字段绑定到表单之前,您可以从请求数据中删除这些字段:

    // The JSON PUT data will include all attributes in the entity, even
    // those that are not updateable by the user and are not in the form.
    // We need to remove these extra fields or we will get a
    // "This form should not contain extra fields" Form Error
    $data = $request->request->all();
    $children = $form->all();
    $data = array_intersect_key($data, $children);
    $form->bind($data);

在我的情况下,解决方案非常简单,只需将allow_add添加到集合字段中,下面是我的示例

        ->add('Details', 'collection', array(
            'type' => new DetailsType(),
            'allow_add' => true,
            'allow_delete' => true,
            'label' => ' '
        ))

您也可以查看此问题的官方文档http://symfony.com/doc/current/cookbook/form/form_collections.html

您需要做的第一件事是让表单集合知道它将接收未知数量的标记。到目前为止,您已经添加了两个标记,并且表单类型期望正好接收两个,否则将抛出一个错误:此表单不应包含额外的字段。要使其灵活,请在集合字段中添加allow_add选项。

不能添加额外的字段,因为它们没有声明到实体中。有一个解决方案可以绕过您的问题:

  • 创建一个可以添加额外字段的动态表单

您有一个关于它如何在github上工作的示例:https://github.com/Keirua/KeiruaProdCustomerDemoBundle

和完整的教程在这个地址(但在法语):

http://blog.keiruaprod.fr/2012/01/18/formulaires-dynamiques-avec-symfony2/

附言:索纳塔似乎用这种方式来添加字段。

相关内容

  • 没有找到相关文章

最新更新