Symfony 2表单额外字段

5

我通过AJAX更改了一些字段,但在尝试保存表单时,出现了一个错误: Extra fields are not allowed

如何修改类似于sf1.4中的validatorPass()的验证器属性?
或者是否可以更改表单以接受额外的字段?

我正在使用SonataAdminBundle创建表单。

3个回答

20

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

    // 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);

在我的情况下,我必须将第一行更改为: $data = $request->request->get($form->getName()); - Sergiy Sokolenko
жңүжІЎжңүеҠһжі•еңЁeventSubscriberдёӯиҺ·еҸ–$requestпјҢд»ҘдҪҝжӯӨи§ЈеҶіж–№жЎҲйҖӮз”ЁдәҺжүҖжңү$builderж·»еҠ дәҶeventSubscriberзҡ„иЎЁеҚ•пјҹ - Simon
非常适合集成REST客户端,例如Restangular等。谢谢! - Slava Fomin II
谢谢,这对我有用。我创建了一个函数,用于我的API处理表单功能:https://gist.github.com/ajankowski/ca28218ac1374c286e90 - albertski

1
在我的情况下,解决方案非常简单,只需将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 选项添加到集合字段中。


0

哦,字段与实体之间是多对多的关系。但我只想列出与一个类别相关联的元素。 - Pawel
使用的关系是OneToMany,因为您创建一个新元素,将链接到该类别。 - Chopchop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接