创建一个新的树枝过滤器

时间:2018-12-11 19:53:30

标签: php symfony twig

我正在尝试创建一个新的树枝过滤器。我对本教程感到困惑: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上创建过滤器吗?

2 个答案:

答案 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