如何为表单类配置空数据

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.1,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

如何为表单类配置空数据

empty_data选项允许您为表单类指定一个空数据集。如果绑定了表单,但还没有调用,就会使用这个空数据集setData ()或在创建表单时传入数据。例如:

1 2 3 4 5 6 7 8 9 10
公共函数indexAction()博客=……;// $blog作为数据传入,因此不需要empty_data选项形式->createForm (BlogType (),博客);//没有数据传入,所以empty_data被用来获取“起始数据”形式->createForm (BlogType ());}

默认情况下,empty_data设置为.或者,如果你指定了data_class选项,它将默认为该类的一个新实例。该实例将通过调用不带参数的构造函数来创建。

如果您想覆盖这个默认行为,有两种方法可以做到这一点。

选项1:实例化一个新类

使用此选项的一个原因是,如果您想使用接受参数的构造函数。记住,默认data_classOption调用不带参数的构造函数:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
/ / src / Acme / DemoBundle /形式/类型/ BlogType.php/ /……使用ob娱乐下载组件形式AbstractType使用AcmeDemoBundle实体博客使用ob娱乐下载组件OptionsResolverOptionsResolverInterfaceBlogType扩展AbstractType私人someDependency公共函数__constructsomeDependency->someDependency =someDependency;}/ /……公共函数setDefaultOptions(OptionsResolverInterface解析器解析器->setDefaults (数组“empty_data”= >博客(->someDependency)));}}

你可以任意地实例化你的类。在本例中,我们将一些依赖项传递到BlogType当我们实例化它时,用它来实例化博客对象。重点是,你可以设置empty_data到您想要使用的确切的“新”对象。

选项2:提供一个闭包

使用闭包是首选的方法,因为它只会在需要时创建对象。

闭包必须接受FormInterfaceInstance作为第一个参数:

12 3 4 5 6 7 8 9 10 11 12
使用ob娱乐下载组件OptionsResolverOptionsResolverInterface使用ob娱乐下载组件形式FormInterface/ /……公共函数setDefaultOptions(OptionsResolverInterface解析器解析器->setDefaults (数组“empty_data”= >函数(FormInterface形式返回博客(形式->get (“标题”->getData ());}));}
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。