Я использовал методы редактирования и обновления в моем контроллере для отправки и обработки отправки формы PUT. Он работает нормально, и код выглядит так,
public function edit(Category $category): Response
{
$form = $this->createForm(CategoryType::class, $category, [
'action' => $this->generateUrl('category_update', [
'id' => $category->getId(),
]),
'method' => 'PUT',
]);
return $this->render('category/edit.html.twig', [
'category_form' => $form->createView(),
]);
}
public function update(Category $category, Request $request): Response
{
$form = $this->createForm(CategoryType::class, $category, ['method' => 'PUT']);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->flush();
return new Response('', Response::HTTP_NO_CONTENT);
}
return new Response('', Response::HTTP_BAD_REQUEST);
}
Поскольку PUT не поддерживается в HTML-формах, запрос на редактирование использует POST с параметром '_method' в качестве 'PUT' вместо реального запроса PUT.
Теперь я хочу удалить метод редактирования и отправить реальный запрос PUT из внешнего интерфейса. Когда я использовал Postman для проверки этого, я обнаружил, что метод обновления не может обработать реальный запрос PUT.
Когда я использую Postman для отправки запросов POST + '_method' = 'PUT', он работает нормально, но когда я отправляю запросы PUT, он показывает BAD_REQUEST, который является последней строкой в моем коде. isSubmitted () возвращает false.
Я знаю, что мне не нужно использовать здесь формы, но они были использованы в методе store. Можно ли использовать его для обработки реального запроса PUT? Что я должен изменить в своем методе обновления?