Атрибут Delete
Атрибут Delete вешается на метод
контроллера и ограничивает его обработкой
только DELETE-запросов. Первым параметром
передаётся путь URL, вторым - имя маршрута.
Это сокращённая форма атрибута Route
с заданным методом запроса.
Синтаксис
#[Delete(path, name: name)]
Пример
Давайте повесим метод контроллера на
DELETE-запрос по адресу '/article/{id}':
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeDelete;
class ArticleController extends AbstractController
{
#[Delete('/article/{id}', name: 'article_delete')]
public function delete(int $id): Response
{
return new Response('deleted ' . $id);
}
}
?>
Результат выполнения кода для адреса
/article/5:
deleted 5
Пример
Давайте используем атрибут Delete
вместе с методами render и
redirectToRoute:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeDelete;
use SymfonyComponentRoutingAttributeGet;
class ArticleController extends AbstractController
{
#[Get('/article/{id}', name: 'article_show')]
public function show(int $id): Response
{
return $this->render('article/show.html.twig', [
'id' => $id,
]);
}
#[Delete('/article/{id}', name: 'article_delete')]
public function delete(int $id): Response
{
return $this->redirectToRoute('article_index');
}
#[Get('/', name: 'article_index')]
public function index(): Response
{
return new Response('article index');
}
}
?>
Шаблон для отображения статьи:
<p>article {{ id }}</p>