php – Symfony 2是否支持部分格式绑定?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – Symfony 2是否支持部分格式绑定?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我的问题:

> Symfony 2是否支持PATCH请求或任何类型的部分表单内容提交?如果是这样,是否有“正确”(或更准确地说,“首选”)的方式呢?
>除了PRE_BIND(见下文)事件方法外,还有其他模式或方法解决这个问题吗?如果还有其他方法解决这个问题,他们中的任何一个别人更好还是更糟?

到目前为止我已经发现/完成了:根据Github(#5576)的提出要求,已经完成了在Symfony 2中支持部分格式绑定的工作(从我的理解,瞄准Symfony 2.2).但是,我找不到任何文档或示例以外的该拉请求,指示如何使用部分表单绑定.

我找到的一个解决方案可能适合我的目的.该方法是将一个事件订阅者附加到一个表单类型的PRE_BIND事件中,粗略搜索stackoverflow产生了与我目前使用的类似的答案:https://stackoverflow.com/a/11687863/657674.

对于PATCH请求,Symfony 2.3(也许更早?)本地支持部分模型更新.见下面的说明.

对于非PATCH请求(例如PUT和POST),您仍然可以通过创建和注册事件订户来执行部分数据绑定,以将未提交的数据操作为其原始值,或者您可以编写一个自定义请求处理程序来始终调用$form-> submIT()方法,$clearMissing设置为false.

使用PATCH请求处理部分绑定

在进一步挖掘Symfony的内部部分之后,更好地了解了事件订阅者和表单扩展,我偶然发现了HttpFoundationRequestHandler类.基本上,作为Symfony 2.3,而不是在绑定表单的提交数据时调用$form-> submit($request),开发人员应该调用$form-> handleRequest($request);这将调用附加的请求处理程序(认为HttpFoundationRequestHandler).请求处理程序做了一些事情,但最重要的是它如何调用$form-> submit().如果请求方法是PATCH告知该表单不将未提供的表单数据绑定为空值,则它将false值传递到表单的提交方法中.

在Symfony 2.3中使用PATCH方法有一些注意事项,可以通过Symfony的文档进一步解释:

How to use HTTP Methods beyond GET and POST in Routes

Symfony的文档的上述引用说明了大多数浏览器不支持发送PUT,PATCH或DELETE请求.这是一个问题,因为我们利用Symfony对部分表单更新的本机支持,我们需要使用PATCH请求.但是,Symfony提供了一个答案.文档告诉我们,我们可以使用_method参数或表单值来欺骗我们想要的实际请求,而Symfony将会准确地知道我们的意思.对于_method的理解,您可能需要启用http_method_override配置选项,例如:

# config.yML
framework:
    http_method_override: true
    ...

还有其他方式告诉Symfony表格应该使用什么方法,可以在这里找到:Changing the Action and Method of a Form.

脚本宝典总结

以上是脚本宝典为你收集整理的php – Symfony 2是否支持部分格式绑定?全部内容,希望文章能够帮你解决php – Symfony 2是否支持部分格式绑定?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。