How to Dump Debug Information in Twig TemplatesΒΆ
When using PHP templates, you can use the dump() function from the VarDumper component if you need to quickly find the value of a variable passed. First, make sure it is installed:
1 | $ composer require symfony/var-dumper
|
This is useful, for example, inside your controller:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // src/Controller/ArticleController.php
namespace App\Controller;
// ...
class ArticleController extends AbstractController
{
public function recentList()
{
$articles = ...;
dump($articles);
// ...
}
}
|
Note
The output of the dump()
function is then rendered in the web developer
toolbar.
In a Twig template, you can use the dump
utility as a function or a tag:
{% dump foo.bar %}
is the way to go when the original template output shall not be modified: variables are not dumped inline, but in the web debug toolbar;- on the contrary,
{{ dump(foo.bar) }}
dumps inline and thus may or not be suited to your use case (e.g. you shouldn't use it in an HTML attribute or a<script>
tag).
1 2 3 4 5 6 7 8 9 10 11 12 | {# templates/article/recent_list.html.twig #}
{# the contents of this variable are sent to the Web Debug Toolbar #}
{% dump articles %}
{% for article in articles %}
{# the contents of this variable are displayed on the web page #}
{{ dump(article) }}
<a href="/article/{{ article.slug }}">
{{ article.title }}
</a>
{% endfor %}
|
By design, the dump()
function is only available in the dev
and test
environments, to avoid leaking sensitive information in production. In fact,
trying to use the dump()
function in the prod
environment will result in
a PHP error.
Execute this command to list all Twig functions, filters, globals, tests and registered namespaces and their paths:
1 2 3 4 5 6 7 8 | # list general information
$ php bin/console debug:twig
# filter output by any keyword
$ php bin/console debug:twig --filter=date
# pass a template name to show the physical file which will be loaded
$ php bin/console debug:twig @Twig/Exception/error.html.twig
|