Because of several reasons including translation of content i had to build a simple CMS to render the pages of my Symfony2 application.
My problem now is, that is se
twig_template_from_string
function's source code is as follows:
function twig_template_from_string(Twig_Environment $env, $template)
{
return $env->createTemplate($template);
}
It means that if you already have a twig environment
then it's better to call directly:
$template = $env->createTemplate($templateString);
$parsedContent = $template->render(array('a'=>'b'));
Symfony 2.7 makes this easy from PHP, too:
$twig = $this->get('twig');
$template = twig_template_from_string($twig, 'Hello, {{ name }}');
$output = $template->render(['name' => 'Bob']));
see http://twig.sensiolabs.org/doc/functions/template_from_string.html and http://symfony.com/doc/current/cookbook/templating/twig_extension.html#register-an-extension-as-a-service
{% include template_from_string("Hello {{ name }}") %}
{% include template_from_string(page.template) %}
Since the string loader is not loaded by default, you need to add it to your config.
# src/Acme/DemoBundle/Resources/config/services.yml
acme.twig.extension.loader:
class: Twig_Extension_StringLoader
tags:
- { name: 'twig.extension' }
Where Acme/acme is your application name and DemoBundle is the bundle you want to enable it for.