Создать новый фильтр веток
Я пытаюсь создать новый фильтр веток. Я смущен этим учебником: 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
При работе с Symfony вы должны взглянуть на документацию Symfony, как определить фильтр / расширение ветки.
https://symfony.com/doc/current/templating/twig_extension.html
Сначала вы должны поместить свой новый класс в новое пространство имен (App/Twig в руководстве), зарегистрировать свой класс как службу и пометить его с помощью twig.runtime
тег. Затем он загружается автоматически, и вы можете использовать его.