Метод generate класса UrlGenerator
Метод generate класса UrlGenerator создаёт URL
на основе имени маршрута и переданных параметров.
Первым параметром передаётся имя маршрута, вторым -
массив параметров для подстановки в путь, третьим -
режим генерации (константа класса). Метод возвращает
строку с готовым URL.
Синтаксис
public function generate(string $name, array $parameters = [], int $referenceType = self::ABSOLUTE_PATH): string
Пример
Давайте сгенерируем URL по имени маршрута 'article_index':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class ArticleController extends AbstractController
{
#[Route('/', name: 'article_index')]
public function index(UrlGeneratorInterface $urlGenerator): Response
{
$url = $urlGenerator->generate('article_index');
return new Response($url);
}
}
?>
Результат выполнения кода:
"/"
Пример
Давайте передадим параметр name в маршрут с плейсхолдером:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class ArticleController extends AbstractController
{
#[Route('/user/{name}', name: 'article_user')]
public function user(UrlGeneratorInterface $urlGenerator): Response
{
$url = $urlGenerator->generate('article_user', ['name' => 'abcde']);
return new Response($url);
}
}
?>
Результат выполнения кода:
"/user/abcde"
Пример
Давайте сгенерируем абсолютный URL, передав константу ABSOLUTE_URL:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class ArticleController extends AbstractController
{
#[Route('/user/{name}', name: 'article_user')]
public function user(UrlGeneratorInterface $urlGenerator): Response
{
$url = $urlGenerator->generate(
'article_user',
['name' => 'abcde'],
UrlGeneratorInterface::ABSOLUTE_URL
);
return new Response($url);
}
}
?>
Результат выполнения кода:
"http://localhost/user/abcde"
Смотрите также
-
класс
UrlGenerator,
который генерирует URL по маршрутам -
метод
generateклассаRouter,
который генерирует URL через роутер -
константа
ABSOLUTE_URL,
которая задаёт генерацию абсолютного URL -
параметр
name,
который задаёт имя маршрута