Php 创建新的细枝过滤器

Php 创建新的细枝过滤器,php,symfony,twig,Php,Symfony,Twig,我正在尝试创建一个新的细枝过滤器。我对本教程感到困惑: 我不知道我应该把代码放在哪里(哪个文件,哪个路径) 我创建了一个名为SnipText.php的文件 <? $filter = new Twig_Filter('snip', function ($context, $texto) { $textoArr = explode(" ", preg_replace('/<[^>]*>/', '', $texto)); $qtdWords = cou

我正在尝试创建一个新的细枝过滤器。我对本教程感到困惑:

我不知道我应该把代码放在哪里(哪个文件,哪个路径)

我创建了一个名为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
上创建过滤器吗?

当您使用symfony时,您应该看看symfony文档如何定义twig过滤器/扩展


首先,您必须将新类放在一个新的名称空间(教程中的App/Twig)中,并将类注册为服务,并使用
Twig.runtime
标记对其进行标记。然后它会自动加载,您可以使用它

Cerad的评论对我帮助很大!多谢各位

好的。您需要找出调用新Twig_Environment()的位置。应该是某种引导文件之类的。然后添加过滤器。我希望您可能会发现定义了其他过滤器,因此应该很容易找到代码的位置。如果您继承的项目没有使用twig,那么您需要后退一步,完成入门文档。并确保您使用的是正确的文档版本。如果这个项目已经有几年的历史了,那么它可能会使用twig1和twig2。差别很大


你是在使用Symfony框架,还是仅仅是某种碰巧使用了twig的独立应用程序?我想第二个选择是,我在第一个开发人员离开后就开始了这个项目,我以前从未使用过twig。您需要找出调用新Twig_Environment()的位置。应该是某种引导文件之类的。然后添加过滤器。我希望您可能会发现定义了其他过滤器,因此应该很容易找到代码的位置。如果您继承的项目没有使用twig,那么您需要后退一步,完成该项目。并确保您使用的是正确的文档版本。如果这个项目已经有几年的历史了,那么它可能会使用twig1和twig2。很大的不同。您正在创建另一个
twig
实例,并将过滤器添加到该实例中,而不是添加到用于呈现模板的实例中。谢谢大家,我找到了twig_environment()的名称:D