Я хочу добавить расширение Sandbox для оценки ненадежного кода с помощью Timber для WordPress (включено с помощью композитора, но я получаю тот же результат при использовании плагина).
Следующий (упрощенный) код приводит к фатальной ошибке.
add_filter('timber/twig', function($twig){
$filters = array_diff(array_keys($twig->getFilters()), ['function']);
$policy = new \Twig\Sandbox\SecurityPolicy([], $filters, [], [], []);
$twig->addExtension(new \Twig\Extension\SandboxExtension($policy, true));
return $twig;
});
Ошибка: Неустранимая ошибка: Uncaught Exception: невозможно зарегистрировать песочницу расширений, поскольку расширения уже инициализированы.
Не имеет значения, применяется ли фильтр «дерево/ветка» или «twig_apply_filters».
Это неправильное место для добавления этого расширения? Кажется, он выполняется только при вызове Timber::compile_string.
Я использую последние версии WordPress и Timber на PHP 7.3.x.
add_filter()
вместоadd_action()
? - person Gchtr   schedule 29.06.2020timber/twig
фильтры? - person Gchtr   schedule 03.07.2020getFilters()
иgetFunctions()
, и это вызывало инициализацию расширений. - person RubyTuesday   schedule 04.07.2020