我正在尝试使用“/ test / item / 1 / name”通过“PUT”方法更新字段,我收到以下错误 “找不到”GET / test / item / 1 / name“的路线:不允许的方法(允许:PUT)”
如果我将方法更改为“POST”
,相同的路线将起作用我甚至尝试在处理请求之前在app.php中添加“ Request :: enableHttpMethodParameterOverride(); ”(即在“$ request = Request :: createFromGlobals();”之前) https://github.com/sensiolabs/SensioGeneratorBundle/issues/165
我的路由配置
information_set_name:
pattern: /item/{id}/name
defaults: { _controller: TestInformationBundle:Item:setName, _format: json }
requirements: { _method: put, id: \d+ }
symfony版本:“v2.2.1”
提前致谢
答案 0 :(得分:1)
如果您在开发模式下工作,则需要在app_dev.php中添加Request::enableHttpMethodParameterOverride();
(正如我从错误消息中看到的那样)。
你应该为你的_method
param使用另一种约束方式:
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
答案 1 :(得分:1)
对于遇到同样问题的每个人。 有时候路由是正确的,但是如果你的控制器中有错误,Symfony会返回通知“找不到路由”。事实并非如此,只是尝试将return语句放在控制器的第一行,然后检查会发生什么。 您应该“状态200 OK”。