我正在慢慢重构我的代码,我在 PHP 中使用 TWIG 作为我的模板“引擎”。我的应用程序中的当前目录结构如下(PSR-4)-
src/
Test/
User/
Resources/
views/
Test/
Core/
Resources/
views/
Run Code Online (Sandbox Code Playgroud)
我正在使用以下代码加载 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,
));
Run Code Online (Sandbox Code Playgroud)
目前,它工作正常,并允许我调用每个 TWIG 文件,例如 -
echo $twig->render('User\Resources\views\partials\sidebar.html.twig', $data);
Run Code Online (Sandbox Code Playgroud)
虽然,输入所有这些很耗时,我想简化它。无论如何,Symfony 如何自动加载捆绑包?
我也尝试在我的加载程序中使用它,但是如果视图文件夹中有类似的目录,所有内容都会被找到的第一个视图覆盖。例如 - 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',
));
Run Code Online (Sandbox Code Playgroud)
想法?
谢谢!
有,它被称为 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');
Run Code Online (Sandbox Code Playgroud)
现在,你的路都是这样@user/partials/sidebar.html.twig,@core/...等