Symfony2是否可以正确处理宁静的网址,并且应该使用宁静的网址?
问题描述:
我想知道什么是设计我的网站的最佳方式。 所以这是我迄今所做的:Symfony2是否可以正确处理宁静的网址,并且应该使用宁静的网址?
account_index:
pattern: /Accounts/
defaults: { _controller: "CoreBundle:Account:index" }
requirements: { _method: get }
account_create:
pattern: /Accounts/
defaults: { _controller: "CoreBundle:Account:create" }
requirements: { _method: post }
account_read:
pattern: /Accounts/{id}
defaults: { _controller: "CoreBundle:Account:show" }
requirements: { _method: get }
account_update:
pattern: /Accounts/{id}
defaults: { _controller: "CoreBundle:Account:update" }
requirements: { _method: put }
account_delete:
pattern: /Accounts/{id}
defaults: { _controller: "CoreBundle:Account:delete" }
requirements: { _method: delete }
测试我所做的事情后,我意识到,更新和删除不工作(总是调用account_read)......谷歌上搜索我的问题后,我发现PUT和DELETE方法在所有浏览器中都不被支持...并且可能在将来被丢弃。
然后我读了Ruby on Rails在所有浏览器上都支持这两种方法,做了一些魔术。
所以我想知道,Symfony2可以处理像红宝石一样的PUT和DELETE吗? AND 我应该使用restful url吗?
答
是的,symfony2明确地是RESTful兼容。
我不知道轨,但Symfony2中使用不同的方式处理HTTP方法检测:
- 首先从php
- 然后获取REQUEST_METHOD,当且仅方法== POST,从获取方法
X-HTTP-METHOD-OVERRIDE
头(退回到_method
请求参数)
为什么它使在POST
这赤是因为浏览器无法发送不外乎GET或POST请求。
与rails和/或symfony1不同的地方在于没有帮助用相应的方法生成链接或表单。您需要为您的应用程序生成有效的请求。
PS:关于你的路由,你应该在_method中将你的需求写在大写中。
答
如果您打算实施RESTful服务,您可以查看RestBundle。他们已经有了相当不错的网址命名约定,你可能会同意,还有很多其他的事情可以简化开发过程。
是的,Symfony2可以处理PUT和DELETE请求。
答
点是不是Symfony的可以做或不可以,关键是如何“平安网址”结合现有的浏览器在处理......
有些浏览器不会允许你使用一些HTTP方法(如放或删除),所以是的,一个很好的实现将使用GET,POST,PUT,DELETE和补丁,但你会得到的问题与一些用户:)
像往常一样... ...浏览器
你有一个想法,为什么Symfony执行account_read而不是account_delete,即使我的表单方法是“DELETE”? – 2012-02-13 15:06:04
即使您的html包含'
' – Florian 2012-02-13 15:34:34