在Symfon欧宝娱乐app下载地址y 5.2:新形式映射回调
2020年10月7日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony的版本。欧宝娱乐app下载地址其中一些信息可能是过时了。阅读最近的Symfony文档欧宝娱乐app下载地址。
提供的
Yonel Ceruto
在# 37968。
有时候,处理的对象Symfony形式不定义(如预期的getter / s欧宝娱乐app下载地址etter方法。getName ()
和setName ()
),但其他方法更符合应用需求(如。getName ()
和重命名()
)。
在这些情况下,您可以使用一个表单数据映射器移动对象数据到表单字段和其它的方法。在Sy欧宝娱乐app下载地址mfony 5.2我们改善这个允许使用回调函数来获取/设置表单字段。你只需要定义新getter
或setter
选项(或两者),Symfony会回调获取/设欧宝娱乐app下载地址置从/到对象数组的值:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27日28
/ / src /形式/类型/ ProductType.php名称空间应用程序\形式\类型;使用应用程序\实体\人;使用欧宝娱乐app下载地址\组件\形式\扩展\核心\类型\TextType;使用欧宝娱乐app下载地址\组件\形式\FormBuilderInterface;使用欧宝娱乐app下载地址\组件\形式\FormInterface;类PersonType扩展AbstractType{公共函数buildForm(FormBuilderInterface美元构建器数组,美元选项){美元构建器- >add (“名字”,TextType::类,“getter”= >函数(人美元人,FormInterface美元形式):字符串{返回美元人- >getUserData ()- >getFirstName ();},“setter”= >函数(人&美元人字符串,?美元的名字,FormInterface美元形式):无效{美元人- >重命名(美元的名字);}))/ /……;}/ /……}
这个新功能意味着您不再需要创建一个数据映射器来解决这个问题。但是,您仍然需要使用数据映射器在某些情况下(当几个表单字段映射到一个方法,当模型的映射取决于所提交的表单数据,等等)。
发表在#生活在边缘
评论
Faizan Akram Dar
说10月7日,2020年在09:39
最初的RPC和我相信公关也“得到”和“设置”键回调访问器,但是现在改变了“getter”和“setter”,我们可以请回到“得到”和“设置”?
它的简洁,也类似于属性访问器的其他编程语言
它的简洁,也类似于属性访问器的其他编程语言
克利斯朵夫Coevoet
说10月7日,2020年在10:07
@Thomas没有。对象并不总是引用。使用引用参数允许替换对象(有用的不可变的对象)。
和表单数据数组也可以。
和表单数据数组也可以。
这真是一个很棒的特性!
FormMappers非常详细和写,不具有很好的可重用性,非常感谢这个简化:)
FormMappers非常详细和写,不具有很好的可重用性,非常感谢这个简化:)
这是一个期待已久的功能!非常感谢你:)
但我认为并不是一个很好的例子代码范例……
为什么你会使用一个单一的名称输入字段如果这个人接口有分裂firstName和lastName ?
如何重命名()的方法应该将单一美元的名字的变量分为“firstName”和“姓”?
请不要说“找一个空格字符和把它”。;-)。
别误会我;我认为这种方法比抽象foo-bar-baz的例子,但我认为这个例子添加混乱。
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now