Почему функция ' dump` не существует в файле twig?
Я не знаю, почему он показывает эту ошибку
The function "dump" does not exist in twig file
в то время как я уже писал в :
services:
product_store.twig.extension.debug:
class: Twig_Extension_Debug
tags:
- { name: 'twig.extension' }
и в файле twig я пытаюсь сбросить с:
{{ dump(product) }}
4 ответов
ответ от lifo призывает вас использовать debug
тег, а debug
tag {% debug product %}
был устаревшим в Twig 1.5 и заменен на dump
функции {{ dump(product) }}
.
правильным расширением для включения с Symfony Standard Edition 2.0.9 является Twig_Extension_Debug
и должен быть добавлен в app/config/config_dev.yml
таким образом, он загружается только в среде dev:
services:
twig.extension.debug:
class: Twig_Extension_Debug
tags: [{ name: 'twig.extension' }]
затем вы должны быть в состоянии использовать {{ dump(product) }}
в вашей шаблоны.
если проблема все еще существует, вы можете попробовать несколько вещей:
-
использовать
php app/console container:debug twig.extension.debug --env=dev
чтобы убедиться, что контейнер инъекции зависимостей правильно подбирает ваше определение службы.[container] Information for service twig.extension.debug Service Id twig.extension.debug Class Twig_Extension_Debug Tags - twig.extension () Scope container Public yes Synthetic no Required File -
откройте скомпилированный класс контейнера инъекций зависимостей для среды разработки и выполните поиск
Twig_Extension_Debug
чтобы увидеть, если какой-либо другой сервис уже был определен для его использования. Этот файл живет вapp/cache/dev/appDevDebugProjectContainer.php
убедитесь, что параметр
%kernel.debug%
- это правда.убедитесь, что вы используете Twig 1.5 или более поздней версии.
во-первых, "дамп" на самом деле не команда, его "отладка". Во-вторых, ваш синтаксис конфигурации немного испорчен. Это должно выглядеть примерно так:
services:
twig.extension.debug:
class: Twig_Extensions_Extension_Debug
tags:
- { name: twig.extension }
тогда вы можете использовать его в своих шаблонах следующим образом:{% debug var %}
-- обратите внимание на фигурные скобки { % % }. Debug не работает в фигурных скобках {{}}, потому что это тег, а не функция.
может быть, причина в том:
куда вы положили
services:
product_store.twig.extension.debug:
class: Twig_Extension_Debug
tags:
- { name: 'twig.extension' }
он должен быть в конфигурации.yml вашего boundle в:
nameOfTheBoundle/Resources/config/config.yml
, а не в config.в формате YML из projeft в:
app/config/config.yml
принятый ответ не работа для меня. Все, что мне нужно было сделать, это включить DebugBundle в AppKernel (только в средах разработки / тестирования):
$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
и это все. Нет необходимости регистрировать какие-либо услуги.