如何从模板引擎 TWIG 中的完整路径加载模板
我想知道如何从完整路径加载模板(如 FILE 常量给出)。
实际上,您必须为模板设置一个“根”路径,如下所示:
require_once '/path/to/lib/Twig/Autoloader.php';
Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem('/path/to/templates');
$twig = new Twig_Environment($loader, array(
'cache' => '/path/to/compilation_cache',
));
然后:
$template = $twig->loadTemplate('index.html');
echo $template->render(array('the' => 'variables', 'go' => 'here'));
我想使用完整路径调用 loadTemplate 方法,而不仅仅是文件名。
我该怎么办?
我不想为这样的事情创建自己的加载程序..
谢谢
I'm wondering how to load a template from it's full path (like FILE constant give).
Actually you have to set a "root" path for template like this :
require_once '/path/to/lib/Twig/Autoloader.php';
Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem('/path/to/templates');
$twig = new Twig_Environment($loader, array(
'cache' => '/path/to/compilation_cache',
));
And then :
$template = $twig->loadTemplate('index.html');
echo $template->render(array('the' => 'variables', 'go' => 'here'));
I want to call the loadTemplate method with a full path and not the just the name of the file.
How can i do ?
I don't want to create my own loader for such an thing..
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
只需这样做:
这样 ->loadTemplate() 将相对于
/
加载模板。或者,如果您希望能够使用相对路径和绝对路径加载模板:
Just do that:
So that ->loadTemplate() will load templates relatively to
/
.Or if you want to be able to load templates both with relative and absolute path:
这是一个加载给定绝对(或非)路径的加载器:
Here is a loader that load an absolute (or not) path given :
扩展加载器比修改库更好:
Extend the loader better than modify the library:
这对我有用(Twig 1.x):
用法:
This works for me (Twig 1.x):
Usage:
在 Symfony(版本 5.4)的配置中,将新的核心路径添加到包含模板的文件夹中。
现在您可以渲染模板了。
在控制器中:
在任何其他地方:
In Symfony's (version 5.4) config add new core path to folder with your templates.
Now you can render template.
In controller:
In any other place:
在 Symfony6 中,你可以这样做:
In Symfony6, you can do :