没有输入的分支函数/过滤器?



我使用Slim 3和Slim Twig-View。我想添加一个Twig函数(或过滤器,不确定有什么区别?),它生成一个随机字符串,并且不接受任何输入。

我可以像这样添加一个过滤器:

$twig->getEnvironment()->addFilter(
new Twig_Filter('guid', function(){ return generateGUID(); })
);

但是如果不提供一些虚拟输入,我似乎无法使用它:

{{ 0|guid }} This will work
{{ guid }} This will not work

我如何在不提供任何输入的情况下使用我的guid过滤器/函数?

过滤器总是适用于某些东西,它过滤什么。

你想要的确实是一个函数。
文档的扩展页是关于这个问题的一个不可思议的信息来源。

乍一看,我甚至会说你应该为这个定义一个标签但是标签上的文档明确地说:

  • 如果你的标签生成一些输出,使用函数相反。

<一口> 来源:https://twig.symfony.com/doc/3.x/advanced.html标记


实际上,为了定义一个函数:

函数的定义方式与过滤器完全相同,但您需要创建TwigTwigFunction的实例:

$twig = new TwigEnvironment($loader); 
$function = new TwigTwig_Function('function_name', function () {
// ... 
}); 
$twig->addFunction($function);

所以更具体地说:

$container->get('view')->getEnvironment()->addFunction(
new Twig_SimpleFunction('guid', function(){ return generateGUID(); })
);

将通过:

访问
{{ guid() }}

其他值得阅读的:

  • 扩展小枝,在Slim文档
  • 你可以用宏
  • 达到同样的效果

相关内容

  • 没有找到相关文章

最新更新