如何在路由中使用HTTP方法超越GET和POST
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.0,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
路由给出了使用GET和POST的例子。您还可以以这种方式使用其他HTTP谓词。例如,如果你有一个博客文章条目,那么你可以使用相同的URL模式来显示它,对它进行更改,并通过匹配GET, PUT和delete来删除它。
- YAML
- XML
- PHP
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
blog_show:模式:/博客/{蛞蝓}默认值:{_controller:AcmeDemoBundle:博客:显示}要求:_method:得到blog_update:模式:/博客/{蛞蝓}默认值:{_controller:AcmeDemoBundle:博客更新}要求:_method:把blog_delete:模式:/博客/{蛞蝓}默认值:{_controller:AcmeDemoBundle:博客:删除}要求:_method:删除
- YAML
- XML
- PHP
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
blog_show:模式:/博客/{蛞蝓}默认值:{_controller:AcmeDemoBundle:博客:显示}要求:_method:得到blog_update:模式:/博客/{蛞蝓}默认值:{_controller:AcmeDemoBundle:博客更新}要求:_method:把blog_delete:模式:/博客/{蛞蝓}默认值:{_controller:AcmeDemoBundle:博客:删除}要求:_method:删除
不幸的是,事情并没有这么简单,因为大多数浏览器不支持发送PUT和DELETE请求。幸运的是,Symfonyob娱乐下载2为您提供了一种绕过这个限制的简单方法。通过包含_method
查询字符串中的参数或HTTP请求的参数,Symfony2将在匹配路由时使用此方法。ob娱乐下载这可以在带有隐藏字段的表单中轻松实现。假设你有一个编辑博客文章的表单:
1 2 3 4 5
<形式行动="{{path('blog_update', {'slug': blog.slug})}}"方法=“职位”><输入类型=“隐藏”的名字=“_method”价值=“把”/>{{form_widget(form)}}<输入类型=“提交”价值=“更新”/>形式>
所提交的请求现在将与blog_update
路线及updateAction
将用于处理表单。
同样地,删除表单可以更改为如下所示:
1 2 3 4 5
<形式行动="{{path('blog_delete', {'slug': blog.slug})}}"方法=“职位”><输入类型=“隐藏”的名字=“_method”价值=“删除”/>{{form_widget(delete_form)}}<输入类型=“提交”价值=“删除”/>形式>
然后它将匹配blog_delete
路线。
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。