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