mirror of
https://github.com/twigphp/Twig.git
synced 2026-08-19 01:52:24 +00:00
61 lines
1.9 KiB
ReStructuredText
61 lines
1.9 KiB
ReStructuredText
``template_from_string``
|
|
========================
|
|
|
|
The ``template_from_string`` function loads a template from a string:
|
|
|
|
.. code-block:: twig
|
|
|
|
{{ 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:
|
|
|
|
.. code-block:: twig
|
|
|
|
{{ 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:
|
|
|
|
.. code-block:: yaml
|
|
|
|
services:
|
|
Twig\Extension\StringLoaderExtension:
|
|
|
|
or ``services.php`` file::
|
|
|
|
$services->set(\Twig\Extension\StringLoaderExtension::class);
|
|
|
|
Otherwise, add the extension explicitly on the Twig environment::
|
|
|
|
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
|