如何配置空数据形式类

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.3,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

如何配置空数据形式类

empty_data选项允许您指定一个空为表单类数据集。这个空的数据集使用如果你提交表单,但没有叫setData ()在表单或数据创建表单时传入。例如:

1 2 3 4 5 6 7 8 9 10 11 12
公共函数indexAction(){美元博客=……;/ /美元博客作为数据传递,所以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日24
/ / src / AppBundle / /类型/ BlogType.php形式/ /……使用欧宝娱乐app下载地址\组件\形式\AbstractType;使用AppBundle\实体\博客;使用欧宝娱乐app下载地址\组件\OptionsResolver\OptionsResolver;BlogType扩展AbstractType{私人美元someDependency;公共函数__construct(美元someDependency){美元- >someDependency =美元someDependency;}/ /……公共函数configureOptions(OptionsResolver美元解析器){美元解析器- >setDefaults (数组(“empty_data”= >博客(美元- >someDependency)));}}

您可以实例化类无论你想要的。在本例中,您通过一些依赖BlogType然后使用该实例化博客类。关键是,你可以设置empty_data确切的“新”对象,你想使用。

提示

为了传递参数BlogType构造函数,您将需要作为服务和标签form.type注册它

选项2:提供一个闭包

使用闭包是首选方法,因为它只会创建对象如果它是必要的。

关闭必须接受FormInterface实例作为第一个参数:

1 2 3 4 5 6 7 8 9 10 11 12
使用欧宝娱乐app下载地址\组件\OptionsResolver\OptionsResolver;使用欧宝娱乐app下载地址\组件\形式\FormInterface;/ /……公共函数configureOptions(OptionsResolver美元解析器){美元解析器- >setDefaults (数组(“empty_data”= >函数(FormInterface美元形式){返回博客(美元形式- >get (“标题”)- >getData ());}));}
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。