Константа NETWORK_PATH
Константа NETWORK_PATH класса UrlGenerator
используется при генерации маршрутов. Она передаётся
третьим параметром в метод generate и указывает
генератору создать URL вида //example.com/path -
со схемой и хостом, но без указания протокола
(без http: или https:) и без начального
слеша в начале строки.
Такая форма ссылки удобна, когда протокол должен
подставляться автоматически на стороне клиента:
браузер сам выберет http: или https:
в зависимости от текущего соединения.
Синтаксис
UrlGeneratorInterface::NETWORK_PATH
Пример
Давайте сгенерируем сетевой путь для маршрута
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('/article', name: 'article_index')]
public function index(): Response
{
$url = $this->generateUrl(
'article_index',
[],
UrlGeneratorInterface::NETWORK_PATH
);
return new Response($url);
}
}
?>
Результат выполнения кода:
"//example.com/article"
Пример
Давайте сгенерируем сетевой путь для маршрута с параметром:
<?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(string $name): Response
{
$url = $this->generateUrl(
'article_user',
['name' => 'abcde'],
UrlGeneratorInterface::NETWORK_PATH
);
return new Response($url);
}
}
?>
Результат выполнения кода:
"//example.com/user/abcde"
Сравнение с другими режимами
Для наглядности сравним результат генерации одного и того же маршрута в разных режимах:
<?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('/article', name: 'article_index')]
public function index(): Response
{
$absoluteUrl = $this->generateUrl(
'article_index',
[],
UrlGeneratorInterface::ABSOLUTE_URL
);
$absolutePath = $this->generateUrl(
'article_index',
[],
UrlGeneratorInterface::ABSOLUTE_PATH
);
$networkPath = $this->generateUrl(
'article_index',
[],
UrlGeneratorInterface::NETWORK_PATH
);
$relativePath = $this->generateUrl(
'article_index',
[],
UrlGeneratorInterface::RELATIVE_PATH
);
return new Response(
$absoluteUrl . ' ' .
$absolutePath . ' ' .
$networkPath . ' ' .
$relativePath
);
}
}
?>
Результат выполнения кода:
"https://example.com/article /article //example.com/article ../article"
Смотрите также
-
класс
UrlGenerator,
который генерирует URL по имени маршрута -
метод
generate,
который принимает режим генерации третьим параметром -
константа
ABSOLUTE_URL,
которая генерирует полный URL со схемой и хостом -
константа
ABSOLUTE_PATH,
которая генерирует абсолютный путь без схемы и хоста