如何配置空数据形式类
编辑该页面如何配置空数据形式类
的empty_data
选项允许您指定一个空为表单类数据集。这个空的数据集使用如果你提交表单,但没有叫setData ()
在表单或数据创建表单时传入。例如,在一个控制器:
1 2 3 4 5 6 7 8 9 10 11 12
公共函数指数():响应{美元博客=……;/ /美元博客作为数据传递,所以empty_data/ /不需要选择美元形式=美元这- >createForm (BlogType::类,美元博客);/ /没有数据传递,所以empty_data/ /用于获取“数据”开始美元形式=美元这- >createForm (BlogType::类);}
默认情况下,empty_data
被设置为零
。或者,如果你已经指定了data_class
选择表单类,它将默认为该类的一个新实例。该实例将创建通过调用不带参数的构造函数。
如果你想覆盖这种默认行为,有两种方法:
如果你没有设置data_class
选项中,可以通过初始数据的字符串或传递一个字符串数组(键匹配的字段名)当表单类型化合物。
选项1:实例化一个新类
您可以使用这个选项的一个原因是如果你想使用一个构造函数,该函数接收参数。记住,默认data_class
选项调用不带参数的构造函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日
/ / src /形式/类型/ BlogType.php名称空间应用程序\形式\类型;/ /……使用应用程序\实体\博客;使用ob娱乐下载\组件\形式\AbstractType;使用ob娱乐下载\组件\OptionsResolver\OptionsResolver;类BlogType扩展AbstractType{公共函数__construct(私人对象美元someDependency,){}/ /……公共函数configureOptions(OptionsResolver美元解析器):无效{美元解析器- >setDefaults ([“empty_data”= >新博客(美元这- >someDependency)]);}}
您可以实例化类无论你想要的。在本例中,您通过一些依赖BlogType
然后使用该实例化博客
类。关键是,你可以设置empty_data
确切的“新”对象,你想使用。
提示
为了传递参数BlogType
构造函数,您将需要注册作为一种服务形式和标记它与form.type
。如果你使用默认的服务。yaml的配置,这已经为你做好了。
选项2:提供一个闭包
使用闭包是首选方法,因为它只会创建对象如果它是必要的。
关闭必须接受FormInterface
实例作为第一个参数:
1 2 3 4 5 6 7 8 9 10 11 12
使用ob娱乐下载\组件\形式\FormInterface;使用ob娱乐下载\组件\OptionsResolver\OptionsResolver;/ /……公共函数configureOptions(OptionsResolver美元解析器):无效{美元解析器- >setDefaults ([“empty_data”= >函数(FormInterface美元形式):博客{返回新博客(美元形式- >get (“标题”)- >getData ());}));}
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。