Атрибут Post
Атрибут Post вешается на метод
контроллера и задаёт адрес страницы, который
будет обрабатывать только POST-запросы. Первым
параметром передаётся путь URL. После запроса
Symfony вызывает метод и возвращает его ответ.
Атрибут Post является сокращённой
записью атрибута Route с параметром
methods, равным ['POST'].
Синтаксис
#[Post(path, name: name)]
Пример
Давайте повесим метод контроллера на адрес '/article':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index', methods: ['POST'])]
public function index(): Response
{
return new Response('hello');
}
}
?>
Результат выполнения кода при POST-запросе:
"hello"
Пример
Давайте используем сам атрибут Post
вместо Route:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Post;
class ArticleController extends AbstractController
{
#[Post('/article', name: 'article_index')]
public function index(): Response
{
return new Response('hello');
}
}
?>
Результат выполнения кода при POST-запросе:
"hello"
Пример
Давайте примем параметр name из URL:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Post;
class ArticleController extends AbstractController
{
#[Post('/user/{name}', name: 'article_user')]
public function user(string $name): Response
{
return new Response($name);
}
}
?>
Результат выполнения кода для адреса /user/abcde:
"abcde"