如何为窗体类配置空数据

编辑本页

如何为窗体类配置空数据

empty_data选项允许您为表单类指定一个空数据集。如果您提交了表单,但还没有调用,则将使用此空数据集setData ()或在创建表单时传入数据。例如,在控制器中:

12 3 4 5 6 7 8 9 10 11 12
公共函数指数()响应博客=……;// $blog被作为数据传入,因此empty_data . log被作为数据传入//不需要这个选项形式->createForm (BlogType::类,博客);//没有数据传入,所以empty_data是//用于获取“起始数据”形式->createForm (BlogType::类);}

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

如果你想覆盖这个默认行为,有两种方法:

如果你没有设置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 25
/ / src /形式/类型/ BlogType.php名称空间应用程序形式类型/ /……使用应用程序实体博客使用ob娱乐下载组件形式AbstractType使用ob娱乐下载组件OptionsResolverOptionsResolverBlogType扩展AbstractType私人someDependency公共函数__constructsomeDependency->someDependency =someDependency;}/ /……公共函数configureOptions(OptionsResolver解析器无效解析器->setDefaults ([“empty_data”= >博客(->someDependency)]);}}

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

提示

来传递参数给BlogType构造函数,你需要将表单注册为服务而且标记它form.type.如果你在用默认的服务。yaml的配置这已经为你做好了。

选项2:提供一个闭包

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

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

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