Атрибут Put
Атрибут Put вешается на метод
контроллера и задаёт адрес страницы, доступный
только для PUT-запросов. Первым параметром
передаётся путь URL. После запроса Symfony
вызывает метод и возвращает его ответ.
Остальные параметры совпадают с атрибутом
Route: name задаёт имя маршрута,
requirements - регулярные ограничения,
defaults - значения по умолчанию.
Синтаксис
#[Put(path, name: name)]
Пример
Давайте повесим метод контроллера на адрес '/article' и разрешим только PUT-запросы:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributePut;
class ArticleController extends AbstractController
{
#[Put('/article', name: 'article_update')]
public function update(): Response
{
return new Response('updated');
}
}
?>
Результат выполнения кода для PUT-запроса на адрес /article:
updated
Пример
Давайте примем параметр id из URL и вернём его в ответе:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributePut;
class ArticleController extends AbstractController
{
#[Put('/article/{id}', name: 'article_update')]
public function update(int $id): Response
{
return new Response('article ' . $id);
}
}
?>
Результат выполнения кода для PUT-запроса на адрес /article/5:
article 5
Пример
Давайте ограничим параметр id только цифрами с помощью requirements:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributePut;
use SymfonyComponentRoutingRequirementRequirement;
class ArticleController extends AbstractController
{
#[Put('/article/{id}', name: 'article_update', requirements: ['id' => Requirement::DIGITS])]
public function update(int $id): Response
{
return new Response('updated ' . $id);
}
}
?>
Результат выполнения кода для PUT-запроса на адрес /article/10:
updated 10