任何人都知道为什么PUT方法不能使用PHP交响乐?如果我将PUT替换为POST,一切正常
/**
* @Route("/api/product/update", name="product_udpate", methods = {"PUT"})
*/
我正在读这样的变量
$request = Request::createFromGlobals();
echo $request->request->get('name');
错误:找不到“PUT / api / product / update / 23”的路由(404 Not Found)
问题是您没有正确创建路线。基本上,您需要在路线中添加“id”。
/**
* @Route("/api/product/update/{id}", name="product_udpate", methods = {"PUT"})
*/
public function updateAction(Request $request, $id)
{
// Your logic here
$name = $request->get('name');
}
您收到以下错误,因为您没有正确配置路由。
error: No route found for "PUT /api/product/update/23" (404 Not Found)
如果您想在您的愿望网址中添加ID,则必须在路线中进行定义。因此,您可以更新您的路线:
/**
* @Route("/api/product/update/{id}", name="product_udpate", methods = {"PUT"}, defaults={"id"=null})
*/
正如symfony文档How to Use HTTP Methods beyond GET and POST in Routes中所述
不幸的是,生活并不那么简单,因为大多数浏览器不支持通过HTML表单中的method属性发送PUT和DELETE请求。幸运的是,Symfony为您提供了一种解决此限制的简单方法。通过在查询字符串中包含_method参数或HTTP请求的参数,Symfony将在匹配路由时将其用作方法
所以你必须伪造这样的方法:
<form action='your route'>
<input type='hidden' name='_method' value='PUT'>
//do something.......
</form>