Параметр env атрибута Route
Параметр env атрибута Route позволяет указать окружение,
в котором маршрут должен быть доступен. Если текущее окружение
приложения не совпадает со значением env, маршрут будет
проигнорирован роутером. Это удобно для разделения маршрутов
между режимами разработки и продакшена. Значением может быть
как строка, так и массив строк.
Синтаксис
#[Route(path, name: name, env: 'dev')]
Пример
Давайте создадим маршрут, доступный только в окружении 'dev':
<?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('/debug', name: 'article_debug', env: 'dev')]
public function debug(): Response
{
return new Response('hello');
}
}
?>
При обращении к адресу /debug в окружении 'dev'
результат выполнения кода:
"hello"
В окружении 'prod' маршрут недоступен, и Symfony вернёт
ошибку 404.
Пример
Давайте передадим несколько окружений в виде массива:
<?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('/user', name: 'article_user', env: ['dev', 'test'])]
public function user(): Response
{
return new Response('user');
}
}
?>
Результат выполнения кода для адреса /user в окружении 'dev':
"user"
Пример
Давайте проверим значение env программно через объект запроса:
<?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('/info', name: 'article_info', env: 'dev')]
public function info(): Response
{
$env = $this->getParameter('kernel.environment');
return new Response($env);
}
}
?>
Результат выполнения кода в окружении 'dev':
"dev"