Почему функция ' 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();
и это все. Нет необходимости регистрировать какие-либо услуги.