Я пытаюсь создать собственный фильтр Twig. Я следовал за этим тутом Symfony Official Book. Но я получаю эту ошибку The filter "avatar" does not exist in src/Acme/Bundle/StoryBundle/Resources/views/Story/storyList.html.twig
Пользовательский фильтр Twig не найден при вызове
Вот мой AvatarExtension.php
<?php
namespace AppBundle\Twig;
class AvatarExtension extends \Twig_Extension
{
public function getFilters()
{
return array(
new \Twig_SimpleFilter('avatar', array($this, 'avatar')),
);
}
public function getName()
{
return 'avatar_extension';
}
public function avatar($user)
{
if ($user->getPicture() && $user->getPicture() != '') {
return $user->getPicture();
} else {
return '/images/default-avatar.jpg';
}
}
}
И мой AppBundle/Ресурсы/конфигурации/services.yml
services:
app.twig.avatar_extension:
class: AppBundle\Twig\AvatarExtension
tags:
– { name: twig.extension }
шаблон, используя фильтр не в тот же набор, что и расширение Twig, но поскольку это сервис, это не должно быть проблемой. Вот как я это называю: {{ story.author|avatar }}
Вы хоть представляете, в чем проблема?
EDIT
# Twig Configuration
twig:
debug: "%kernel.debug%"
strict_variables: "%kernel.debug%"
globals:
uploadTmpDir: %upload.tmp.relative.dir%
ли отступом services.yml, как это? Если это так, вам нужно отложить '- {name: twig.extension}' еще 4 пробела. – qooplmao
Да, выглядит странно, что ваш файл services.yml компилируется, я думал, что вы получите исключение «Невозможно определить элемент последовательности в случае отображения». –
Файл services.yml имеет правильный отступ. Отступ сломался, когда я разместил его здесь – Hakim