Silex - 如何访问我的Web根目录和应用程序根目录

时间:2014-10-16 11:58:12

标签: php twig silex

我是否可以通过我的$ app变量(Silex \ Application)调用函数来访问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中,我可能想引用我的doc root或app root

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

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

我找到了一些我可以在Twig模板中使用但在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()等,但是如果有其他方法则很好奇

1 个答案:

答案 0 :(得分:8)

如果你的请求被注入你的控制器,那么twig的app.request.baseurl在php中可以$app["request"]->getBaseUrl()$request->getBaseUrl()

对于app root,我总是在我的bootstrap文件中完成define("ROOT", __DIR__ . "/../")