РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить