Метод generate класса Router
Метод generate класса Router
создаёт URL-адрес на основе имени маршрута
и массива параметров. Первым параметром
передаётся имя маршрута, вторым - массив
значений для подстановки в путь. Третьим
параметром можно передать флаги генерации,
например UrlGeneratorInterface::ABSOLUTE_URL.
Синтаксис
$router->generate(string $name, array $parameters = [], int $referenceType = UrlGeneratorInterface::ABSOLUTE_PATH)
Пример
Давайте сгенерируем URL для маршрута с именем 'article_index':
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
use SymfonyComponentRoutingGeneratorUrlGeneratorInterface;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(UrlGeneratorInterface $urlGenerator): Response
{
$res = $urlGenerator->generate('article_index');
return new Response($res);
}
}
?>
Результат выполнения кода:
"/article"
Пример
Давайте сгенерируем URL с параметром id:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
use SymfonyComponentRoutingGeneratorUrlGeneratorInterface;
class ArticleController extends AbstractController
{
#[Route('/article/{id}', name: 'article_show')]
public function show(UrlGeneratorInterface $urlGenerator): Response
{
$res = $urlGenerator->generate('article_show', ['id' => 5]);
return new Response($res);
}
}
?>
Результат выполнения кода:
"/article/5"
Пример
Давайте сгенерируем абсолютный URL с помощью флага ABSOLUTE_URL:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
use SymfonyComponentRoutingGeneratorUrlGeneratorInterface;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(UrlGeneratorInterface $urlGenerator): Response
{
$res = $urlGenerator->generate(
'article_index',
[],
UrlGeneratorInterface::ABSOLUTE_URL
);
return new Response($res);
}
}
?>
Результат выполнения кода:
"http://localhost/article"
Смотрите также
-
класс
Router,
который управляет маршрутизацией в Symfony -
метод
match,
который находит маршрут по URL -
класс
UrlGenerator,
который отвечает за генерацию URL -
метод
generate,
который генерирует URL по имени маршрута