Как организовать роутинг внутри Bundle?

В Symfony роутинг является важной частью организации приложения, и он позволяет определить, какие URL-адреса будут соответствовать каким действиям контроллера. Организация роутинга внутри Bundle требует выполнения нескольких шагов, которые я постараюсь объяснить подробно.

Шаг 1: Создание маршрута
Первым шагом является создание маршрута, которому будет соответствовать ваше действие контроллера. Маршрут определяется уникальным именем, HTTP-методом, URL-адресом и атрибутами. Вы можете определить маршрут в файле routing.yml или аннотациях внутри вашего Bundle.

Пример маршрута в файле routing.yml:

my_bundle_route:
    path: /my-route
    defaults:
        _controller: MyBundle:MyController:myAction

Пример маршрута с использованием аннотаций в контроллере:

/**
 * @Route("/my-route")
 */
public function myAction()
{
    // действия контроллера
}

Шаг 2: Регистрация маршрута
Затем, после создания маршрута, нужно зарегистрировать его в файле routing.yml основного приложения или в файле services.yml вашего Bundle. Это позволит Symfony знать о наличии этого маршрута и использовать его.

Пример регистрации маршрута в файле routing.yml:

my_bundle_routes:
    resource: "@MyBundle/Resources/config/routing.yml"
    prefix: /

Пример регистрации маршрута в файле services.yml:

services:
    MyBundleControllerMyController:
        resource: '@MyBundle/Controller'
        type: annotation

Шаг 3: Создание контроллера
Как видно в первом шаге, маршрут ссылается на действие контроллера. Теперь вам нужно создать контроллер внутри вашего Bundle, который будет содержать это действие. Контроллер может содержать одно или несколько действий, но в данном случае мы фокусируемся только на одном действии.

Пример контроллера:

namespace MyBundleController;

use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;

class MyController extends AbstractController
{
    public function myAction()
    {
        return new Response('Hello, World!');
    }
}

Шаг 4: Обновление кэша роутов
После создания маршрута, регистрации его и создания контроллера необходимо обновить кэш роутов Symfony с помощью консольной команды php bin/console cache:clear. Это обязательный шаг, и без него Symfony не будет распознавать ваш маршрут.

Это весь процесс организации роутинга внутри Bundle в Symfony. После выполнения этих шагов вы сможете обратиться к созданному URL-адресу /my-route и увидеть ответ "Hello, World!" от вашего контроллера.