如何在路由中使用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:删除

不幸的是,事情并没有这么简单,因为大多数浏览器不支持发送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许可证。