超薄框架基础URL

时间:2012-07-14 05:00:31

标签: php slim

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

由于

7 个答案:

答案 0 :(得分: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

答案 1 :(得分:13)

使用Slim v3,因为它实现了PSR7,你可以获得一个PSR7 Uri对象并调用Slim3在其上添加的getBasePath()方法。只需写下:

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

来自Slim v3 documentation

  

基本路径

     

如果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()."/";