18

我正在为一个backbone.js 应用程序开发一个symfony2 后端。我有我的模型和形式。

但是,backbone.js 在创建/更新模型时会向 REST API 发送一些额外的属性,而我正在努力让表单进行验证。

如何在 symfony2 中获取表单以接受附加数据,或者如何在将数据绑定到表单之前删除特定键?

4

4 回答 4

64

您应该使用选项“allow_extra_fields”。

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
        $resolver->setDefaults(
        array(
            'allow_extra_fields' => true
        )
    );
}

对于 symfony 2.8+ 使用 configureOptions(OptionsResolver $resolver) 而不是 setDefaultOptions(OptionsResolverInterface $resolver)

于 2014-10-08T22:00:26.880 回答
16

property_path 现在在 sf 2.1 中已弃用,请改用“mapped”

$builder
    ->add("firstName", "text")
    ->add("lastName", "text")
    ->add("tac", "checkbox", array(
        "mapped" => false
    )
);
于 2013-02-08T07:56:16.950 回答
12

要让 Symfony2 接受附加数据,请将附加字段添加到表单构建器,并将其property_path选项设置为 false:

例子:

$builder
    ->add('my_additional_field', 'checkbox', array(
        'mapped' => false,
    ));

您不需要在绑定数据之前删除键,它们无论如何都会被忽略。

于 2012-06-03T10:15:39.357 回答
2

您可以侦听FormEvents::BIND_CLIENT_DATA(或者FormEvents::PRE_BIND如果您使用的是 2.1 开发版)事件侦听器并添加/删除字段。请参阅食谱条目。

于 2012-06-03T09:22:00.017 回答