我想使用一些内置的symfony2扩展(例如:humanize,yaml_dump)来建立一个不是在symfony中开发但使用twig engine的网站。我可以这样做吗?
答案 0 :(得分:5)
symfony/twig-bridge
包提供特定于symfony的树枝扩展名。
这些包括提供yaml_dump
过滤器的YamlExtension和提供humanize
过滤器的FormExtension。
可以在Extension
文件夹中找到扩展程序。
我强烈建议您通过composer
安装软件包以自动获取软件包的依赖项。
composer require symfony/twig-bridge:~2.3
进一步的作曲家会自动为自动加载器(vendor/autoload.php
)注册类。
现在您只需要按照documentation。
中的说明将扩展添加到twig$twig->addExtension(new \Symfony\Bridge\Twig\Extension\YamlExtension());
// ...
答案 1 :(得分:1)
一个完整的示例,包含扩展类和快速扩展(新过滤器):
<?php
require_once("vendor/autoload.php");
$loader = new Twig_Loader_String();
$twig = new Twig_Environment($loader);
// here we add the extension class (taken from @nifr answer)
$twig->addExtension(new \Symfony\Bridge\Twig\Extension\YamlExtension());
// here we add a new filter quickly
$filter = new Twig_SimpleFilter('paragraph', function ($argument) {
return "<p>{$argument}</p>";
}, array('pre_escape' => 'html', 'is_safe' => array('html')));
$twig->addFilter($filter);
// demo
echo $twig->render('{{ "hello" | paragraph }}');