[英]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'));
});
使用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.