如何使用没有symfony2的symfony2 twig扩展

时间:2014-02-15 13:02:10

标签: symfony twig

我想使用一些内置的symfony2扩展(例如:humanize,yaml_dump)来建立一个不是在symfony中开发但使用twig engine的网站。我可以这样做吗?

2 个答案:

答案 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 }}');