Создать новый фильтр веток

Я пытаюсь создать новый фильтр веток. Я смущен этим учебником: https://twig.symfony.com/doc/2.x/advanced.html

Я не знаю, куда мне поместить код (какой файл, какой путь)...

Я создал файл с именем SnipText.php

<?     
$filter = new Twig_Filter('snip', function ($context, $texto) {
    $textoArr = explode(" ", preg_replace('/<[^>]*>/', '', $texto));
    $qtdWords = count($textoArr);
    $texto = '';
    for($i=0;$i<40;$i++){
        if($qtdWords > $i)
            $texto .= $textoArr[$i] . ' ';
        }
    $texto .= '...';
    return $texto;
}, array('needs_context' => true));

$twig = new Twig_Environment($loader);
$twig->addFilter($filter);
?>

А потом я положил его в папку src. Веточка в моей папке продавца. Я получаю ошибку:

Неустранимая ошибка: Uncaught Twig_Error_Syntax: Неизвестный "отрывной" фильтр.

Может кто-нибудь показать мне шаг за шагом, как создать фильтр на twig?

2 ответа

Решение

Комментарий @Cerad мне очень помог! Спасибо

Хорошо. Вам нужно выяснить, где вызывается новый Twig_Enviroment(). Должен быть какой-то загрузочный файл или что-то в этом роде. А затем добавьте свой фильтр. Я ожидаю, что вы, вероятно, найдете другие определяемые фильтры, поэтому будет достаточно легко выяснить, куда идет код. Если в проекте, который вы унаследовали, не использовалась ветка, вам нужно отступить назад и начать работу с документацией по началу работы. И убедитесь, что вы используете правильную версию документа. Если проекту более двух лет, возможно, он использует Twig 1 против Twig 2. Большая разница. - Cerad

1

При работе с Symfony вы должны взглянуть на документацию Symfony, как определить фильтр / расширение ветки.

https://symfony.com/doc/current/templating/twig_extension.html

Сначала вы должны поместить свой новый класс в новое пространство имен (App/Twig в руководстве), зарегистрировать свой класс как службу и пометить его с помощью twig.runtime тег. Затем он загружается автоматически, и вы можете использовать его.

1
Другие вопросы по тегам