Slim Framework Base URL


Slim Framework Base URL

我是Slim Framework的新手。如何获得与Codeigniter函数base_url()类似的基本URL?

感谢

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

$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对象,并调用Slim3添加到其中的getBasePath()方法

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

来自Slim v3文档:

基本路径

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

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

在最近使用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 }}获得基本url(我使用的是Twig模板引擎)。顺便说一句,这与"SCRIPT_NAME"环境变量相同。

如果您正在使用TWIG,则在Slim v3中调用-

{{ base_url() }}

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

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