Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
203 of 1361 menu
◀ ▶

Метод getBasePath

Метод getBasePath класса Request возвращает базовый путь текущего запроса. Под базовым путём понимается часть URL, которая идёт после домена, но до имени исполняемого скрипта. Метод не принимает параметров и возвращает строку. Если приложение установлено в корне домена, метод вернёт пустую строку.

Метод полезен, когда приложение развёрнуто в подкаталоге, например /app или /symfony/public. В этом случае getBasePath помогает построить корректные ссылки и понять, где именно расположено приложение на сервере.

Синтаксис

public function getBasePath(): string

Пример

Давайте получим базовый путь из текущего запроса и вернём его в ответе:

<?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 RequestController extends AbstractController { #[Route('/request/base-path', name: 'request_base_path')] public function basePath(Request $request): Response { $res = $request->getBasePath(); return new Response($res); } } ?>

Результат выполнения кода для приложения в корне домена:

""

Пример

Давайте сравним getBasePath с getBaseUrl и getPathInfo, чтобы увидеть разницу между ними:

<?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 RequestController extends AbstractController { #[Route('/request/compare', name: 'request_compare')] public function compare(Request $request): Response { $res = [ 'basePath' => $request->getBasePath(), 'baseUrl' => $request->getBaseUrl(), 'pathInfo' => $request->getPathInfo(), ]; return new Response(json_encode($res)); } } ?>

Результат выполнения кода для приложения, развёрнутого в подкаталоге /app с адресом /app/index.php/user:

{"basePath":"\/app","baseUrl":"\/app\/index.php","pathInfo":"\/user"}

Как видно из результата, getBasePath возвращает только базовый каталог, без имени скрипта, в отличие от getBaseUrl.

Пример

Давайте используем getBasePath для построения ссылки на статический файл:

<?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 RequestController extends AbstractController { #[Route('/request/asset', name: 'request_asset')] public function asset(Request $request): Response { $res = $request->getBasePath() . '/images/logo.png'; return new Response($res); } } ?>

Результат выполнения кода для приложения в подкаталоге /app:

"/app/images/logo.png"

Смотрите также

  • метод getBaseUrl,
    который возвращает базовый URL с именем скрипта
  • метод getPathInfo,
    который возвращает путь после скрипта
  • метод getScriptName,
    который возвращает имя исполняемого скрипта
  • класс Request,
    который представляет HTTP-запрос
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить