我是 Slim 框架的新手。如何使用 Codeigniter 函数获取基本 URL base_url()
?
谢谢
您需要先手动设置基本网址,然后才能获得它,如下所示:
$app->hook('slim.before', function () use ($app) {
$app->view()->appendData(array('baseUrl' => '/base/url/here'));
});
使用 Slim v3,因为它实现了 PSR7,所以您可以获得 PSR7 Uri 对象并调用 Slim3 在其上添加的 getBasePath() 方法。简单地写:
$basePath = $request->getUri()->getBasePath();
来自Slim v3 文档:
基本路径
如果您的 Slim 应用程序的前端控制器位于文档根目录下的物理子目录中,您可以使用 Uri 对象的 getBasePath() 方法获取 HTTP 请求的物理基本路径(相对于文档根目录)。如果 Slim 应用程序安装在文档根目录的最顶层目录中,这将是一个空字符串。
请注意,getBasePath() 方法是由框架添加的,不是PSR7 UriInterface的一部分。
在我们最近使用 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
并且不需要配置。
尝试在 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 ));
});
{{ 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()."/";