我正在尝试创建一个新的树枝过滤器。我对本教程感到困惑:https://twig.symfony.com/doc/2.x/advanced.html#filters
我不知道将代码(哪个文件,哪个路径)放在哪里...
我创建了一个名为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文件夹中。嫩枝在我的供应商文件夹中。我收到错误消息:
致命错误:未被捕获的Twig_Error_Syntax:未知的“片段”过滤器。
有人可以逐步介绍如何在twig
上创建过滤器吗?
答案 0 :(得分:1)
使用symfony时,应查看symfony文档中如何定义树枝过滤器/扩展名。
https://symfony.com/doc/current/templating/twig_extension.html
首先,您必须将新类放入新的名称空间(本教程中为App / Twig),然后将类注册为服务,并使用twig.runtime
标签对其进行标记。然后它会自动加载,您可以使用它。
答案 1 :(得分:1)
@Cerad的评论对我很有帮助!谢谢
好的。您需要弄清楚在哪里调用了新的Twig_Enviroment()。应该是某种引导文件或其他内容。然后添加您的过滤器。我希望您可能会发现其他已定义的过滤器,因此应该很容易找出代码的去向。如果您继承的项目没有使用树枝,那么您需要退后一步并完成入门文档。并确保您使用的文档版本正确。如果该项目已经使用了两年以上,那么它可能使用的是Twig 1 vs Twig2。差异很大。 – Cerad