据我所知,当控制器获得post / put / patch请求时,JMSSerializerBundle的反序列化与symfony表单组件的作用相同吗?
所以要么我为例如创建一个symfony自定义formType一个UserType,当我收到请求时,我会执行类似$ form-> handleRequest($ request)的操作,或者使用JMSSerializerBundle将请求反序列化为最终存储的文档/实体。
有没有人有这两种方法的经验?目前我只熟悉表格方式......我应该选择哪一个?
我正在谈论的应用程序纯粹是Restful,没有twig html模板,FOSRestbundle正在进行所有RESTful路由。
答案 0 :(得分:5)
在我们的restfull API中,我们通常使用Symfony Serializer component来处理实体的反序列化,然后使用Symfony Validator component来确保实体在数据库中推送/更新之前满足所有必需条件。效果很好,比表单组件轻。
无论如何Form组件将无法反序列化json / xml,因此您必须使用序列化器。
答案 1 :(得分:1)
Symfony \ Form组件相对于JMS Serializer的好处是验证在反序列化之前完成,符合PHP 7严格类型。示例 - 您传递数组而不是字符串,JMS创建和对象,getter从验证程序引发\TypeError
而不是验证错误。