Метод getUriForPath класса Request
Метод getUriForPath класса Request
возвращает абсолютный URI для переданного пути.
Первым параметром передаётся путь, для которого
нужно построить URI. Метод учитывает схему, хост и порт
текущего запроса и возвращает полную строку адреса.
Метод удобно использовать, когда нужно получить абсолютный адрес ресурса относительно корня сайта, например для генерации ссылок в письмах или API-ответах.
Синтаксис
public function getUriForPath(string $path): string
Пример
Давайте получим абсолютный URI для пути '/article':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$res = $request->getUriForPath('/article');
return new Response($res);
}
}
?>
Результат выполнения кода для адреса 'https://example.com/article':
"https://example.com/article"
Пример
Давайте получим абсолютный URI для вложенного пути '/user/profile':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class UserController extends AbstractController
{
#[Route('/user', name: 'user_index')]
public function index(Request $request): Response
{
$res = $request->getUriForPath('/user/profile');
return new Response($res);
}
}
?>
Результат выполнения кода для адреса 'https://example.com/user':
"https://example.com/user/profile"
Пример
Давайте получим абсолютный URI с нестандартным портом:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ApiController extends AbstractController
{
#[Route('/api', name: 'api_index')]
public function index(Request $request): Response
{
$res = $request->getUriForPath('/api/data');
return new Response($res);
}
}
?>
Результат выполнения кода для адреса 'http://example.com:8080/api':
"http://example.com:8080/api/data"
Смотрите также
-
метод
getUri,
который возвращает полный URI текущего запроса -
метод
getSchemeAndHttpHost,
который возвращает схему и хост текущего запроса -
метод
getBaseUrl,
который возвращает базовый URL текущего запроса -
класс
Request,
который представляет HTTP-запрос в Symfony