php - Twig Loader 命名空间

标签 php symfony twig

我正在慢慢重构我的代码,我正在使用 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.

关于php - Twig Loader 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28750326/

相关文章:

php - 无法将身份验证电子邮件作为 View 中的字段值(larave5.3)

PHP/MySQL 登录不工作

php - MySql 数据库连接压缩

Symfony 记录新文件的弃用警告

postgresql - 使用 doctrine2 postgresql 的模式更新总是 DROPs 然后 ADDs CONSTRAINTs

php - 这个 Twig 代码性能明智,足够快吗?

php - Twig,添加第一个和最后一个类

javascript - 无法通过 AJAX 发送数组

javascript - Symfony2 assetic 导致 javascript 错误

date - 在 Twig 中显示日期间隔