2014-10-16 80 views
2

我可以通過我的$ app變量(Silex \ Application)調用訪問Web根目錄和應用程序根目錄的函數嗎?Silex - 如何訪問我的Web根目錄和應用程序根目錄

假設我的項目佈局是這樣

/src <-- Contains bootstrap.php (register all required services), controllers.php (routes) 
/vendor <-- Contains autoload.php and Silex source 
/web <-- Contains index.php, Creates $app, includes app/bootstrap.php and $app->run() 

而在SRC/controllers.php我可能想引用我的文檔根目錄或應用程序根

$app 
    ->get('/', function() use ($app) { 
     // Would like to do something like 
     $webRoot = $app->getWebRoot(); 

     return $app['twig']->render('home.html.twig'); 
    }) 
    ->bind('home'); 

我已經找到了我可以使用在樹枝模板但沒有方便的方法在PHP

<link href="{{ app.request.baseUrl }}/libs/bootstrap-3.2.0-dist/css/bootstrap.min.css" media="screen" rel="stylesheet" type="text/css" /> 

我可以使用__DIR__,dirname()等,但是好奇如果有另一種方式

+0

我有一個'bootstrap'腳本,用於加載一個具有所有'配置目錄'作爲屬性和'成員'的類。這在'silex'之前運行,所以'隨處可用'。您可以輕鬆將其添加到'silex'。它還具有'dev','test'等'runtime_environment'。 – 2014-10-16 16:14:14

回答

8

Twig的app.request.baseurl是在PHP中可用$app["request"]->getBaseUrl()$request->getBaseUrl()如果您有請求注入到您的控制器。

至於應用程序根目錄,我一直在我的引導文件中完成define("ROOT", __DIR__ . "/../")

+0

不知道爲什麼,但getBaseUrl和getBasePath都返回空字符串。然而,Request對象上的其他方法似乎可以正常工作,例如getPathInfo和getRequestUri。 – Carlton 2014-10-17 15:58:10

+0

根解決方案似乎很好,順便說一下:D – Carlton 2014-10-17 15:58:32

+0

這回答我的原始問題,現在要找到爲什麼「getBaseUrl」和「getBasePath」返回空字符串 – Carlton 2014-10-21 17:02:01