Symfony:Route PUT方法

问题描述 投票:1回答:3

任何人都知道为什么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)

symfony
3个回答
3
投票

问题是您没有正确创建路线。基本上,您需要在路线中添加“id”。

/**
 * @Route("/api/product/update/{id}", name="product_udpate", methods = {"PUT"})
 */
public function updateAction(Request $request, $id)
{
    // Your logic here
    $name = $request->get('name');

}

2
投票

您收到以下错误,因为您没有正确配置路由。

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})
    */


-1
投票

正如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>
© www.soinside.com 2019 - 2024. All rights reserved.