Slim Framework базовый URL

Я новичок В Slim Framework. Как получить базовый URL, как с функцией Codeigniter base_url()?

спасибо

7 ответов


вам нужно установить базовый url вручную, прежде чем вы сможете его получить как в этом:

$app->hook('slim.before', function () use ($app) {
    $app->view()->appendData(array('baseUrl' => '/base/url/here'));
});

http://help.slimframework.com/discussions/questions/49-how-to-deal-with-base-path-and-different-routes


С Slim v3, поскольку он реализует PSR7, вы можете получить объект Uri PSR7 и вызвать метод getBasePath (), который добавляет Slim3. Просто напишите:

$basePath = $request->getUri()->getBasePath();

С Slim V3 документация :

Базовый Путь

Если передний контроллер приложения Slim находится в физическом подкаталоге под корневым каталогом документа, можно получить физический базовый путь HTTP-запроса (относительно корневого каталога документа) с помощью метода getBasePath() объекта Uri. Это будет пустая строка, если приложение Slim установлено в самом верхнем каталоге корневого каталога документа.

имейте в виду, что метод getBasePath () добавляется платформой и не является частью PSR7 UriInterface.


в недавнем приложении, где мы используем Twig, мы назначаем httpBasePath следующим образом:

$view = $app->view()->getEnvironment();
$view->addGlobal('httpBasePath', $app->request->getScriptName());

на addGlobal() метод, вероятно, эквивалентен $app->view()->appendData(), Я не уверен.

преимущества использования $app->request->getScriptName() это то, что нам не нужно вручную устанавливать имя папки или заботиться о том, что это – один разработчик может иметь РЕПО, расположенное в http://example.localhost и другой может иметь его в http://localhost/projects/slim и никакая конфигурация не необходима.


попробуйте это в индекс.php для установки базового url для представления

$app->hook('slim.before', function () use ($app) {
    $posIndex = strpos( $_SERVER['PHP_SELF'], '/index.php');
    $baseUrl = substr( $_SERVER['PHP_SELF'], 0, $posIndex);
    $app->view()->appendData(array('baseUrl' => $baseUrl ));
});

Я могу получить базовый url с {{ app.request.getRootUri }} (Я использую движок шаблонов Twig). Кстати, это то же самое, что и переменная среды 'SCRIPT_NAME'.


Если вы используете TWIG, то В Slim v3 вызов -

{{ base_url() }}

или использовать {{ path_for('yourRouteName') }}


самый простой способ получить базовый url-адрес-добавить url-адрес запроса и корневой url-адрес запроса, как показано ниже: $req = $app->request; $base_url = $req->getUrl()."".$req->getRootUri()."/";