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'));
});
С Slim v3, поскольку он реализует PSR7, вы можете получить объект Uri PSR7 и вызвать метод getBasePath (), который добавляет Slim3. Просто напишите:
$basePath = $request->getUri()->getBasePath();
Базовый Путь
Если передний контроллер приложения 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()."/";