如何嵌入形式
编辑该页面如何嵌入形式
通常,您会希望构建一种包括来自许多不同的对象的字段。例如,一个属于一个注册表单可能包含数据用户
对象以及许多地址
对象。幸运的是这可以通过表单组件。
嵌入一个对象
假设每个任务
属于一个类别
对象。首先创建的类别
类:
1 2 3 4 5 6 7 8 9 10
/ / src /实体/ Category.php名称空间应用程序\实体;使用ob娱乐下载\组件\验证器\约束作为断言;类类别{#(断言\ NotBlank)公共字符串美元的名字;}
接下来,添加一个新的类别
财产任务
类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
/ /……类任务{/ /……#[断言\类型(类型:类别::类))#[断言有效\]受保护的类别?美元类别=零;/ /……公共函数getCategory():哦?类别{返回美元这- >类别;}公共函数setCategory(?类别美元类别):无效{美元这- >类别=美元类别;}}
提示
的有效的
约束添加到属性类别
。这瀑布验证相应的实体。如果你忽略这个约束,孩子不会验证实体。
现在,您的应用程序已经更新以反映新的需求,创建一个类,这样一个形式类别
对象由用户可以修改:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
/ / src /形式/ CategoryType.php名称空间应用程序\形式;使用应用程序\实体\类别;使用ob娱乐下载\组件\形式\AbstractType;使用ob娱乐下载\组件\形式\FormBuilderInterface;使用ob娱乐下载\组件\OptionsResolver\OptionsResolver;类CategoryType扩展AbstractType{公共函数buildForm(FormBuilderInterface美元构建器数组,美元选项):无效{美元构建器- >add (“名字”);}公共函数configureOptions(OptionsResolver美元解析器):无效{美元解析器- >setDefaults ([“data_class”= >类别::类,]);}}
最终目标是允许的类别
的任务
在任务表单本身要修改的权利。为此,添加一个类别
场的TaskType
对象的类型的新实例CategoryType
类:
1 2 3 4 5 6 7 8 9
使用应用程序\形式\CategoryType;使用ob娱乐下载\组件\形式\FormBuilderInterface;公共函数buildForm(FormBuilderInterface美元构建器数组,美元选项):无效{/ /……美元构建器- >add (“类别”,CategoryType::类);}
的字段CategoryType
现在可以一起呈现的TaskType
类。
呈现类别
字段一样原始任务
字段:
1 2 3 4 5 6 7 8
{#……#}<h3>类别< /h3><div类=“类别”>{{form_row (form.category.name)}}< /div>{#……#}
当用户提交表单时,提交的数据类别
字段是用于构造的一个实例类别
,然后套上类别
场的任务
实例。
的类别
自然通过实例访问$任务- > getCategory ()
并且可以但是你需要持久化到数据库或使用。
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。
< /article>