Как использовать дамп в TWIG?

Я добавляю для шаблона (index.html.twig) просто:

{{ dump(product) }}

а у меня ошибка:

The function "dump" does not exist in AcmeStoreBundle:Default:index.html.twig at line 2 

Почему эта функция не включена и как я могу ее включить?


person Tyler Greened    schedule 12.04.2012    source источник
comment
возможный дубликат Как переменные var_dump в шаблонах веток?   -  person meze    schedule 12.04.2012


Ответы (3)


Вам нужно настроить расширение отладки:

# app/config/config.yml
services:
    acme_hello.twig.extension.debug:
        class:        Twig_Extension_Debug
        tags:
             - { name: 'twig.extension' }

По ссылке, упомянутой выше, отладка Twig настроена на работу по умолчанию в Symfony 2.5+ с Twig 1.16+, и определение пользовательского сервиса не требуется. Дополнительные сведения см. в этом ответе.

person meze    schedule 12.04.2012
comment
Я не знаю, старые ли это ответы или просто неполные, но это определенно НЕ работает для меня. Я пробовал много разных версий этого ответа, но безрезультатно. - person Chadwick Meyer; 01.10.2014
comment
@ChadwickMeyer есть ссылка, в которой говорится, что все, что вам нужно, это включить ее в конфигурации twig: debug: true - person meze; 01.10.2014
comment
Спасибо. Я сделал это, и это не сработало. Но я также обновился с Symfony 2.4 до 2.5 и запустил composer update (который обновился с Twig 1.15 до 1.16, и теперь он работает. Так что кто знает... - person Chadwick Meyer; 02.10.2014
comment
И для протокола: я удалил пользовательскую конфигурацию, которую вы упомянули в этом ответе, поскольку ссылка, на которую вы ссылаетесь, говорит, что отладка Twig включена в среде разработки по умолчанию. - person Chadwick Meyer; 02.10.2014
comment
@ChadwickMeyer не знает, почему ваше редактирование было отклонено. Добавил вашу ссылку и проголосовал за ваш ответ. Спасибо. - person meze; 03.10.2014

Когда вы настроите его, как сказал @meze, вы можете отобразить все пользовательские переменные:

<h1>Variables passed to the view:</h1>
{% for key, value in _context %}
    {% if key starts with '_' %}
    {% else %}
        <pre style="background: #eee">{{ key }}</pre>
        {{ dump(value) }}
    {% endif %}
{% endfor %}

Вы можете использовать мой простой плагин для удобной проверки ваших переменных:

Панель дампа Twig

person kapitalny    schedule 05.03.2016

ОБНОВЛЕНИЕ Symfony 2.7+:

DebugBundle обеспечивает большую интеграцию компонента в фреймворк полного стека Symfony. Он включен по умолчанию в среде разработки и тестирования Symfony Standard Edition.

Проверьте компонент VarDumper и его интеграция в Twig.

СТАРЫЙ ОТВЕТ:

Я хотел бы предложить неродное решение. Вам понадобится сторонний комплект, но конечный результат будет отличным!

Улучшения версии dump:

  1. все дампы стилизованы
  2. вы можете указать максимальный уровень вложенности, чтобы избежать проблем с памятью при работе с большими объектами.
  3. очень полезные помощники, такие как ldd(), который является псевдонимом для классического "dump and die"
  4. у него есть консольный дампер (например, php app/console ladybug:dump "Symfony\Component\HttpFoundation\Request")
  5. обеспечивает интеграцию с Symfony Profiler
  6. он автоматически обнаруживает классы Symfony, Doctrine, Twig и Silex и связывает их с официальной документацией.

Вот ссылки:

person Francesco Casula    schedule 08.07.2013
comment
в Symfony 2.7+ вам, вероятно, лучше использовать официальный компонент VarDumper: symfony.com/doc/current/components/ - person Francesco Casula; 06.12.2016