1

我正在尝试通过“PUT”方法使用“/test/item/1/name”更新字段,我收到以下错误“没有为“GET /test/item/1/name”找到路由:不允许方法(允许:PUT)

如果我将方法更改为“POST”,相同的路线将起作用

我什至尝试在处理请求之前在 app.php 中添加“ Request::enableHttpMethodParameterOverride(); ”(即在“$request = Request::createFromGlobals();”之前) https://github.com/sensiolabs/SensioGeneratorBundle/问题/165

我的路由配置

information_set_name:
  pattern:  /item/{id}/name
  defaults: { _controller: TestInformationBundle:Item:setName, _format: json }
  requirements: { _method: put, id: \d+ }

symfony 版本:“v2.2.1”

提前致谢

4

2 回答 2

1

如果您在开发模式下工作,则需要添加Request::enableHttpMethodParameterOverride();app_dev.php(从您的错误消息中可以看出)。

你应该为你的_method参数使用另一种约束方式:

information_set_name:
  pattern:  /item/{id}/name
  defaults: { _controller: TestInformationBundle:Item:setName, _format: json }
  requirements: { id: \d+ }
  methods:   [PUT]

请参阅文章http://symfony.com/doc/current/cookbook/routing/method_parameters.html

于 2013-06-20T07:17:18.070 回答
1

对于每个有同样问题的人。有时路由是正确的,但如果你的控制器有错误,Symfony 会返回通知“No route found”。这不是真的,只需尝试将 return 语句放在控制器的第一行,然后检查会发生什么。你应该得到"status 200 OK"

于 2014-05-21T06:37:52.960 回答