PHP Silex Framework无法添加Twig_Extension_StringLoader扩展

时间:2013-12-05 21:00:01

标签: php symfony frameworks twig silex

我正在尝试使用

中所述的template_from_string

http://twig.sensiolabs.org/doc/functions/template_from_string.html

我怎样才能从Silex那里做到这一点?我看到Twig / Exteion / StringLoader.php文件就在那里。这是我试过的代码

$app['twig'] = $app->share($app->extend('twig', function($twig, $app) {
    $twig->addExtension(new MarkdownExtension());
    $twig->addExtension(new Twig_Extension_StringLoader());
    return $twig;
}));

但是当我尝试使用它时

    return $app['twig']->template_from_string(
        "The is the {{ title }}", 
        array('title' => 'Hello')
    );

它会产生以下错误

Fatal error: Call to undefined method Twig_Environment::template_from_string()

我要做的是从DB或其他文件中获取模板内容,然后使用Twig渲染而不是使用模板文件,因此我可以将多个部分模板组合到主模板中。或者,如果有更好的方法?

请注意,我已经知道如何在模板文件中使用insert,如

{% include 'home-section.html.twig' %}

但这不会解决我的问题,因为它无法获取要自动解析的内容数据。

谢谢。

1 个答案:

答案 0 :(得分:0)

只需创建另一个树枝对象

$loader = new Twig_Loader_String();
$twig = new Twig_Environment($loader);

echo $twig->render('Hello {{ name }}!', array('name' => 'Fabien'));