Intereting Posts
MySql Общая ошибка: 2053 Предупреждение: imagejpeg () : gd-jpeg: библиотека JPEG сообщает о неустранимой ошибке Где я могу добавить вспомогательные функции Laravel 4, которые могут отображать флэш-сообщения? Отправить письмо с localhost на XAMMP в PHP с помощью почтового сервера GMAIL Получить строку между – Найти все вхождения PHP как отправить значение div в форме Преобразование XML с использованием XSLT в SQL Как отправить данные формы с моего сайта на мой адрес электронной почты? Какова ценность использования PUT / DELETE с Laravel? Связывание параметров для инструкции PDO внутри цикла file_put_contents и новая строка Невозможно правильно вставить греческие символы в базу данных mysql Пользовательское мобильное меню в Drupal 7 не может получить доступ к дочерним ссылкам Альтернатива с открытым исходным кодом AddThis AddToAny, ShareThis и т. Д. Для социальных закладок Как использовать PDO для получения массива результатов в PHP?

Исходный URL Slim Framework

Я новичок в Slim Framework. Как получить базовый URL-адрес, например, с помощью функции base_url() ?

благодаря

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

 $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, вы можете получить объект PSR7 Uri и вызвать метод 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 и не требуется настройка.

Попробуйте в index.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 call –

 {{ base_url() }} 

или используйте {{ path_for('yourRouteName') }}

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