Twig 无输入的细枝功能/过滤器?
我正在使用Slim 3和Slim Twig视图。我想添加一个Twig函数(或者filter,不确定有什么区别?),它生成一个随机字符串,并且不接受任何输入 我可以添加如下过滤器:Twig 无输入的细枝功能/过滤器?,twig,slim,slim-3,Twig,Slim,Slim 3,我正在使用Slim 3和Slim Twig视图。我想添加一个Twig函数(或者filter,不确定有什么区别?),它生成一个随机字符串,并且不接受任何输入 我可以添加如下过滤器: $twig->getEnvironment()->addFilter( new \Twig_Filter('guid', function(){ return generateGUID(); }) ); 但如果不提供一些虚拟输入,我似乎无法使用它: {{ 0|guid }} This will wo
$twig->getEnvironment()->addFilter(
new \Twig_Filter('guid', function(){ return generateGUID(); })
);
但如果不提供一些虚拟输入,我似乎无法使用它:
{{ 0|guid }} This will work
{{ guid }} This will not work
如何在不提供任何输入的情况下使用我的
guid
filter/函数?过滤器总是应用于某个对象,它过滤某个对象
实际上,您需要的是一个函数。文件的这一页是关于这一问题的令人难以置信的信息来源 乍一看,我甚至会说您应该为此定义一个标记,但标记上的文档明确指出:
- 如果您的标记生成一些输出,请使用函数
事实上,为了定义一个: 函数的定义方式与过滤器完全相同,但您需要创建
\Twig\TwigFunction
的实例:
$twig = new \Twig\Environment($loader);
$function = new \Twig\Twig_Function('function_name', function () {
// ...
});
$twig->addFunction($function);
因此,更具体地说,对你来说:
$container->get('view')->getEnvironment()->addFunction(
new Twig_SimpleFunction('guid', function(){ return generateGUID(); })
);
可通过以下途径访问:
{{ guid() }}
其他值得一读的内容:
- ,在Slim文档中
- 你可以用一个简单的方法达到同样的效果