Twig 带参数的细枝自定义函数

Twig 带参数的细枝自定义函数,twig,Twig,我阅读了twig文档,但对自定义函数和过滤器有点困惑。我了解如何添加自定义函数。但我不明白如何编写一个函数来接受一些参数,也可能是一些可选参数 例如,我为名为sqare的函数编写了以下伪代码 $twig = new Twig_Environment($loader); $function = new Twig_SimpleFunction('square', function () { if param2 present? return param1*param2; e

我阅读了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);

现在我想要的是,param1应该有一个默认值1,param2应该是可选的。平方函数将返回两个参数的乘积。我还希望,如果用户不传递第二个参数,那么将返回param1,即返回第一个参数。我如何实现这一点?另外,我是否应该调用twig模板中的函数作为
{{square(5,10)}

您需要在
闭包中定义参数。
Twig将相应地传递参数

$function = new Twig_SimpleFunction('square', function ($param1, $param2 = null) {
    return isset($param2) ? $param1 * $param2 : $param1;
});
然后在
Twig
中使用以下命令调用此函数:

Only one param : {{ square(5) }}
Two params : {{ square(5, 2) }}