Как я могу сделать специальный побег для Twig через Timber? - PullRequest
0 голосов
/ 19 января 2019

Я использую Twig и Timber в WordPress и хочу сделать настраиваемый эскапер для документации Twig.

$twig = new Twig_Environment($loader);
$twig->getExtension('Twig_Extension_Core')->setEscaper('csv', 'csv_escaper');

// before Twig 1.26
$twig->getExtension('core')->setEscaper('csv', 'csv_escaper');

Однако я не уверен, как это сделать при использовании Timber с ним; Я не смог найти никаких документов по этому вопросу в Timber - возможно ли это без редактирования файлов ядра?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Попробовав ответ DarkBee, я обнаружил этот ответ на похожий вопрос, в котором они получили ту же ошибку, что и я, и после использования приведенного ниже кода я получил работающий пользовательский фильтр:

add_filter('timber/twig', 'blm_add_twig_custom_filters');

function blm_add_twig_custom_filters($twig) {
    $twig->addExtension(new Twig_Extension_StringLoader());
    $twig->addFilter(new Twig_SimpleFilter('e2', 'escape_no_double'));
    return $twig;
}

/* Custom twig/timber escaper so it doesn't double encode html entities */

function escape_no_double($str) {
    return htmlspecialchars($str, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8', false);
}

Больше можно найти здесь .

0 голосов
/ 21 января 2019

Как видно из документации , вы можете использовать add_filter, чтобы добавить спасателя,

add_filter( 'timber/twig', function( \Twig_Environment $twig ) {
    $twig->getExtension('Twig_Extension_Core')->setEscaper('csv', 'csv_escaper');
    return $twig;
} );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...