Symfonyob娱乐下载 5.2新增功能:表单映射回调
2020年10月7日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony版本。ob娱乐下载有些信息可能已经过时了。阅读最新的Symfony文档ob娱乐下载.
提供的
Yonel Ceruto
在# 37968.
有时,使用Symfony表单处理的对象没有定义预期的getter/setob娱乐下载ter方法(例如。getName ()
而且setName ()
),但其他方法更符合应用程序的需要(例如:getName ()
而且重命名()
).
在这些情况下,您可以使用表单数据映射器将对象数据移动到表单字段中,或者将对象数据移动到表单字段中。在Syob娱乐下载mfony 5.2中,我们对此进行了改进,以允许使用用于获取/设置表单字段的回调函数.您只需要定义新的getter
或setter
options(或两者都有),Symfonyob娱乐下载将运行该回调来获取/设置对象/数组中的/值:
12 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名称空间应用程序\形式\类型;使用应用程序\实体\人;使用ob娱乐下载\组件\形式\扩展\核心\类型\TextType;使用ob娱乐下载\组件\形式\FormBuilderInterface;使用ob娱乐下载\组件\形式\FormInterface;类PersonType扩展AbstractType{公共函数buildForm(FormBuilderInterface$构建器数组,$选项){$构建器->add (“名字”, TextType::类,“getter”= >函数(人$人, FormInterface$形式):字符串{返回$人->getUserData ()->getFirstName ();},“setter”= >函数(人&$人字符串,?$的名字, FormInterface$形式):无效{$人->重命名($的名字);}))/ /……;}/ /……}
这个新特性意味着您不再需要创建数据映射器来解决这个问题。但是,在某些情况下仍然需要使用数据映射器(当多个表单字段映射到单个方法时,当模型的映射依赖于提交的表单数据时,等等)。
发表在#生活在边缘
评论
Faizan Akram Dar
2020年10月7日说在09:39
最初的RPC,我相信PR也有'get'和'set'作为回调访问器的键,但是现在它已经被改变为'getter'和'setter',我们能回到'get'和'set'吗?
它很简洁,也类似于其他编程语言的属性访问器
它很简洁,也类似于其他编程语言的属性访问器
克利斯朵夫Coevoet
2020年10月7日说在10:07
@Thomas没有。对象并不总是引用。使用参数的引用可以替换对象(在不可变对象的情况下很有用)。
表单数据也可以是数组。
表单数据也可以是数组。
这真的是一个很棒的功能!
formmapper是相当冗长和编写,并不是很可重用的,非常感谢你的这种简化:)
formmapper是相当冗长和编写,并不是很可重用的,非常感谢你的这种简化:)
但我认为代码示例不是一个好示例……
如果Person接口有分离的firstName和lastName,为什么要使用单一的名称输入字段呢?
如何' rename() '方法应该分裂单数' $name '变量为' firstName '和' lastName ' ?
请不要说“寻找一个空格字符并在那里拆分”。; -)。
不要误解我的意思;我认为这类例子比抽象的foo-bar-baz例子要好得多,但我认为这个例子增加了混乱。
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now