PHP Silex Framework не может добавить расширение Twig_Extension_StringLoader

Я пытаюсь использовать 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()

То, что я пытаюсь сделать, это получить содержимое шаблона из БД или другого файла, а затем визуализировать его с помощью Twig вместо использования файла шаблона, чтобы я мог объединить несколько шаблонов разделов в основной шаблон. Или если есть лучший способ?

Обратите внимание, что я уже знаю, как использовать вставку в файле шаблона, например

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

но это не решит мою проблему, потому что не может получить данные контента для автоматического анализа.

Спасибо.


person user702300    schedule 05.12.2013    source источник


Ответы (1)


Просто нужно было создать еще один объект ветки

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

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