Класс AbstractController
Класс AbstractController является базовым классом для всех
контроллеров в Symfony. Он предоставляет удобные методы для
рендеринга шаблонов, создания редиректов, генерации URL,
работы с формами, вспышками и проверкой прав доступа.
Наследуя контроллер от этого класса, вы получаете доступ
ко всем этим инструментам через переменную $this.
Класс не имеет собственного конструктора и не требует передачи каких-либо параметров. Все его методы являются защищёнными, поэтому вызывать их можно только внутри контроллера.
Синтаксис
<?php
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class MyController extends AbstractController
{
// methods
}
?>
Пример
Давайте создадим простой контроллер, который наследуется
от AbstractController и возвращает ответ через метод
render:
<?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('/', name: 'article_index')]
public function index(): Response
{
return $this->render('article/index.html.twig', [
'title' => 'hello',
]);
}
}
?>
Шаблон для этого контроллера:
<p>{{ title }}</p>
Результат выполнения кода:
<p>hello</p>
Пример
Давайте используем метод redirectToRoute для
перенаправления на другой маршрут:
<?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('/old', name: 'article_old')]
public function old(): Response
{
return $this->redirectToRoute('article_index');
}
#[Route('/new', name: 'article_index')]
public function index(): Response
{
return new Response('abcde');
}
}
?>
Результат выполнения кода для адреса /old:
abcde
Смотрите также
-
метод
render,
который рендерит Twig-шаблон -
метод
redirectToRoute,
который выполняет редирект на маршрут -
метод
json,
который возвращает JSON-ответ -
метод
getUser,
который возвращает текущего пользователя