簡體   English   中英

Slim Framework基本URL

[英]Slim Framework Base URL

我是Slim Framework的新手。 如何像使用Codeigniter函數base_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()方法是由框架添加的,並且不是PSR7 UriInterface的一部分。

在最近使用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 ,不需要任何配置。

在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()."/"; $req = $app->request; $base_url = $req->getUrl()."".$req->getRootUri()."/";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM