如何为窗体类配置空数据
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 5.3,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
如何为窗体类配置空数据
的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_class
Option调用不带参数的构造函数:
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娱乐下载\组件\OptionsResolver\OptionsResolver;类BlogType扩展AbstractType{私人$someDependency;公共函数__construct($someDependency){$这->someDependency =$someDependency;}/ /……公共函数configureOptions(OptionsResolver$解析器):无效{$解析器->setDefaults ([“empty_data”= >新博客($这->someDependency)]);}}
你可以任意地实例化你的类。在本例中,将一些依赖项传递到BlogType
实例化博客
类。重点是,你可以设置empty_data
到您想要使用的确切的“新”对象。
提示
来传递参数给BlogType
构造函数,你需要将表单注册为服务而且标记它与form.type
.如果你在用默认的服务。yaml的配置这已经为你做好了。
选项2:提供一个闭包
使用闭包是首选的方法,因为它只会在需要时创建对象。
闭包必须接受FormInterface
Instance作为第一个参数:
12 3 4 5 6 7 8 9 10 11 12
使用ob娱乐下载\组件\形式\FormInterface;使用ob娱乐下载\组件\OptionsResolver\OptionsResolver;/ /……公共函数configureOptions(OptionsResolver$解析器):无效{$解析器->setDefaults ([“empty_data”= >函数(FormInterface$形式){返回新博客($形式->get (“标题”)->getData ());}));}
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。