Symfony2形式的prependClientTransformer和appendClientTransformer有什么区别?

时间:2012-04-18 13:24:52

标签: symfony

Symfony2表单中的prependClientTransformer和appendClientTransformer有什么区别?我什么时候应该使用prependClientTransformer,appendClientTransformer。有什么例子吗?

2 个答案:

答案 0 :(得分:3)

我对此有所了解:

您正在应用DataTransformer的FormType具有在getParent()方法中定义的父类型。

prependClientTransformer 将应用已传输的DataTransformer BEFORE 从父类型应用的那些

appendClientTransformer 将应用已传输的DataTransformer AFTER 从父类型应用的那些。

答案 1 :(得分:0)

正如您在source中看到的那样,这些方法用于控制clientTransformers的调用序列,用于转换字段数据。在创建自定义字段类型时很有用。

例如,您想要创建一个tag字段类型,该字段将采用逗号分隔值,这些值将在内部转换为标记数组。您将其父级设置为text字段类型。您还为标记类型创建了一个转换器,它将数组转换为字符串,反之亦然。现在,您的代码类型将包含两个clientTranformerValueToStringTransFormer以及最后位置的变换器。因此,当您将数据绑定到表单或提交表单时,symfony会将客户端数据转换为字符串,然后将转换后的字符串转换为数组(如here所述)。对于反向情况,它会将数组转换为字符串,然后将字符串转换为客户端值(如定义here)。但是没有找到prependClientTransformer的用例:)。