php - Twig Loader 命名空间

我正在慢慢重构我的代码,我正在使用 TWIG 作为我在 PHP 中的模板“引擎”。我的应用程序中当前的目录结构如下 (PSR-4) -

src/ 
    Test/
        User/
            Resources/
                views/
     Test/
        Core/
            Resources/
                views/

我正在使用以下代码加载 TWIG -

Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem(array(
    dirname(__DIR__). '/src/Test'
));
$twig = new Twig_Environment($loader, array(
    'cache' => dirname(__DIR__). '/app/storage/cache',
    'debug' => true,
));

目前,它工作正常并允许我调用每个 TWIG 文件,如 -

echo $twig->render('User\Resources\views\partials\sidebar.html.twig', $data);

不过,输入所有这些内容很耗时,我想简化它。无论如何,Symfony 如何自动加载 bundle ?

我也尝试在我的加载器中使用它,但是如果 View 文件夹中有类似的目录,所有内容都会被找到的第一个 View 覆盖。例如 - 将使用 Core/Resources/views/partials/sidebar.twig 而不是 User/Resources/views/partials/sidebar.twig

$loader = new Twig_Loader_Filesystem(array(
            dirname(__DIR__). '/src/Test/Core/Resources/views',
            dirname(__DIR__). '/src/Test/User/Resources/views',
    ));

想法?

谢谢!

最佳答案

有,叫做Twig命名空间:http://twig.sensiolabs.org/doc/api.html#built-in-loaders

$loader->addPath(dirname(__DIR__).'/src/Test/Core/Resources/views', 'core');
$loader->addPath( dirname(__DIR__). '/src/Test/User/Resources/views', 'user');

现在你的路径就像@user/partials/sidebar.html.twig, @core/..., etc.

https://stackoverflow.com/questions/28750326/

相关文章:

git - 如何在不推送我的情况下从 GitHub pull 更改?

python - 断言错误 : View function mapping is overwriti

python - 使用 np.arrays python 对列表进行排序

asp.net-mvc - Razor Html.Raw 无法呈现 ViewModel 数据

git - 将远程分支重置为之前的提交

angularjs - 嵌套的 ng-repeat 中的 Angular ng-bind-html

java - spring boot 启动rest服务失败

php - 从 html 下载图像并保持文件夹结构

objective-c - 如何在 Xcode 6 中禁用 ARC

oracle - 增加 SQL Developer 导出中的行数