8

我是 Slim 框架的新手。如何使用 Codeigniter 函数获取基本 URL base_url()

谢谢

4

7 回答 7

18

您需要先手动设置基本网址,然后才能获得它,如下所示:

$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

于 2012-07-14T05:37:05.363 回答
13

使用 Slim v3,因为它实现了 PSR7,所以您可以获得 PSR7 Uri 对象并调用 Slim3 在其上添加的 getBasePath() 方法。简单地写:

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

来自Slim v3 文档

基本路径

如果您的 Slim 应用程序的前端控制器位于文档根目录下的物理子目录中,您可以使用 Uri 对象的 getBasePath() 方法获取 HTTP 请求的物理基本路径(相对于文档根目录)。如果 Slim 应用程序安装在文档根目录的最顶层目录中,这将是一个空字符串。

请注意,getBasePath() 方法是由框架添加的,不是PSR7 UriInterface的一部分。

于 2016-01-21T10:05:35.417 回答
6

在我们最近使用 Twig 的应用程序中,我们按如下方式分配 httpBasePath:

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

addGlobal()方法可能相当于$app->view()->appendData(),我不确定。

使用的好处$app->request->getScriptName()是我们不必手动设置文件夹名称或关心它是什么——一个开发人员可以拥有 repo http://example.localhost,另一个可以拥有它,http://localhost/projects/slim并且不需要配置。

于 2014-01-24T19:04:48.403 回答
4

尝试在 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 ));
});
于 2013-10-05T02:00:13.677 回答
2

{{ app.request.getRootUri }}我可以使用(我正在使用 Twig 模板引擎)获取基本网址。顺便说一句,这与“SCRIPT_NAME”环境变量相同。

于 2015-03-25T09:51:46.553 回答
1

如果您使用的是 TWIG,那么在 Slim v3 调用中 -

{{ base_url() }}

或使用{{ path_for('yourRouteName') }}

于 2016-07-23T17:16:44.763 回答
0

获取基本 url 的最简单方法是附加请求 url 和请求根 url,如下所示: $req = $app->request; $base_url = $req->getUrl()."".$req->getRootUri()."/";

于 2015-06-11T07:35:26.180 回答