我是Slim Framework的新手。如何使用Codeigniter函数base_url()
获取基本URL?
由于
答案 0 :(得分:18)
您需要先手动设置基本网址,然后才能获取它 如下:
$app->hook('slim.before', function () use ($app) {
$app->view()->appendData(array('baseUrl' => '/base/url/here'));
});
答案 1 :(得分:13)
使用Slim v3,因为它实现了PSR7,你可以获得一个PSR7 Uri对象并调用Slim3在其上添加的getBasePath()方法。只需写下:
$basePath = $request->getUri()->getBasePath();
基本路径
如果Slim应用程序的前端控制器位于文档根目录下的物理子目录中,则可以使用Uri对象的getBasePath()方法获取HTTP请求的物理基本路径(相对于文档根目录)。如果Slim应用程序安装在文档根目录的最顶层目录中,那么这将是一个空字符串。
请注意,框架添加了getBasePath()方法,而不是PSR7 UriInterface的一部分。
答案 2 :(得分:6)
在最近我们使用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
,无需配置。
答案 3 :(得分: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 ));
});
答案 4 :(得分:2)
我可以使用{{ app.request.getRootUri }}
获取基本网址(我使用的是Twig模板引擎)。
顺便提一下,这与“SCRIPT_NAME”相同。环境变量。
答案 5 :(得分:1)
如果您正在使用TWIG,那么在Slim v3中调用 -
{{ base_url() }}
或使用{{ path_for('yourRouteName') }}
答案 6 :(得分:0)
获取基本网址的最简单方法是附加请求网址和请求根网址,如下所示:
$req = $app->request;
$base_url = $req->getUrl()."".$req->getRootUri()."/";