Знакомимся с понятием Symfony route

symfony route

Одно из основных понятий Symfony, с которым желательно познакомиться - это такое понятие как route (роут). Давайте будем разбираться, что это такое.

route - это просто путь, по которому мы можем обратиться к ресурсу (контрольной точке) внутри Symfony.

Когда мы создали какой-то сайт, у этого сайта есть его доменное имя. Например, site.ru. Есть путь к конкретному ресурсу, который мы запрашиваем (например, category/first).

Итого, https://site.ru/category/first.

category/first - это и есть тот самый route. 

route - это тот конкретный путь до того ресурса, к которому мы хотим с вами обратиться. Это тот  путь, который должен ввести пользователь в адресную строку браузера, чтобы у него открылось какое-то определенное содержимое. 

route = путь + ресурс, который будет обрабатывать контроллер.

Где создаются routes

Как правило, роуты создаются внутри контроллера, но есть еще вариант хранения роута в конфигурационных файлах. Роуты, по сути, это просто настройки для symfony, который говорят какой метод внутри класса контроллера соответствует какому-то пути в вашем проекте.

Создание роутов внутри контроллера

Если мы говорим о создании роутов внутри контроллера, здесь есть 2 основных способа. Более устаревший способ: с помощью аннотаций. Этот способ использовался до Symfony версии 6.

Выглядит это следующим образом:

/**
* @Route("/blog}", name="blog_show") 
*/
public function showAction()    {
}

Аннотации - это просто особым образом оформленные PHP комментарии. Они должны обязательно располагаться над методом, к которому они относятся. 

Symfony умеет воспринимать эти аннотации и понимает, что это настройки роута и нужно использовать их для метода, который располагается ниже.

С появлением Symfony 6 и PHP 8, использование аннотаций в коде является устаревшей формой создания роутов внутри контроллера. Как правило, сейчас используется конструкция атрибутов.

Выглядит это следующим образом:

    #[Route('/wb_keys', name: 'wb_keys')]
    public function test(): Response
    {
        return $this->render('wb_keys.html.twig',[]);
    }

Это немного более сокращенная форма записи и в отличии от аннотаций ее можно записать одной строкой.

Здесь используется конструкция #[настройки]

Создание routes в конфигурационных файлах.

Кроме создания роутов в контроллере, есть также возможность их создания внутри файлов конфигурации. 

Главный настроечный файл для создания роутов config/routes.yaml. В этом файле мы также можем прописать какие роуты будут в нашей системе. Например,

post_show:
    path:       /posts
    controller: 'App\Controller\DefaultController::showPost'

path - создает путь для роута, а controller указывает ссылку на тот контроллер и метод внутри него, который будет вызывать при обращении по этому адресу.

В общих чертах, это основы создания Symfony routes (роутов). Здесь есть еще много особенностей и тонкостей работы, с которыми мы будем разбираться в следующих видео. Давайте на практике создадим первый роут и первый контроллер и посмотрим, как это у нас будет работать.