Thanks to visit codestin.com
Credit goes to twig.symfony.com

Twig

The flexible, fast, and secure
template engine for PHP

a Symfony Product
Docs Functions template_from_string
Docs for Twig version 3.x
Switch to another version: 1.x, 2.x

Questions & Feedback

License

Twig documentation is licensed under the new BSD license.

template_from_string

The template_from_string function loads a template from a string:

1
2
{{ include(template_from_string("Hello {{ name }}")) }}
{{ include(template_from_string(page.template)) }}

To ease debugging, you can also give the template a name that will be part of any related error message:

1
{{ include(template_from_string(page.template, "template for page " ~ page.name)) }}

Note

The template_from_string function is not available by default.

On Symfony projects, you need to load it in your services.yaml file:

1
2
services:
    Twig\Extension\StringLoaderExtension:

or services.php file:

1
$services->set(\Twig\Extension\StringLoaderExtension::class);

Otherwise, add the extension explicitly on the Twig environment:

1
2
3
4
use Twig\Extension\StringLoaderExtension;

$twig = new \Twig\Environment(...);
$twig->addExtension(new StringLoaderExtension());

Note

Even if you will probably always use the template_from_string function with the include function, you can use it with any tag or function that takes a template as an argument (like the embed or extends tags).

Danger

Never allow template_from_string in a sandboxed template. There is no legitimate use case for letting untrusted template code build and render arbitrary new templates on the fly, and doing so makes any sandbox policy impossible to reason about. In particular, when sandboxing is driven by a SourcePolicyInterface, the template created by template_from_string gets a synthesized name that is not possible to match, so the inner template ends up running with no sandbox at all.

Arguments

  • template: The template
  • name: A name for the template