带参数的 Twig 自定义函数

6 twig

我阅读了树枝文档,但我对自定义函数和过滤器有点困惑。我了解如何添加自定义功能。但是我不明白怎么写一个接受一些参数的函数,也可能是一些可选参数。

例如,我有以下名为 sqare 的函数的伪代码。

$twig = new Twig_Environment($loader);
$function = new Twig_SimpleFunction('square', function () {
    if param2 present?
     return param1*param2;
    else
     return param1;
});
$twig->addFunction($function);
Run Code Online (Sandbox Code Playgroud)

现在我想要的是,param1 应该有一个默认值 1,而 param2 应该是可选的。square 函数将返回两个参数的乘积。我还希望如果用户不传递第二个参数,则 param1 将被返回,即第一个参数将被返回。我该如何实施?另外,我应该在树枝模板中调用函数{{ square(5, 10) }}吗?

Dar*_*Bee 6

您需要在closure. Twig 将相应地传递参数

$function = new Twig_SimpleFunction('square', function ($param1, $param2 = null) {
    return isset($param2) ? $param1 * $param2 : $param1;
});
Run Code Online (Sandbox Code Playgroud)

然后你调用这个函数Twig

Only one param : {{ square(5) }}
Two params : {{ square(5, 2) }}
Run Code Online (Sandbox Code Playgroud)