twig 过滤多个参数

问题描述 投票:0回答:2

我正在尝试创建一个可以处理 2 个参数的特定树枝过滤器。

$documentURL = new Twig_SimpleFilter('documentURL', function($DocumentId, $UserId){

    $URL = "http://example.example.com/start/".$DocumentId."/".$UserId."/";

    return $URL;

});

并将滤镜添加到渲染中:

$twig->addFilter($documentURL);

现在模板中请求过滤器:

{{documentURL(booking.docId, user.id)}}

但是,我收到一个错误,该函数不存在。相当奇怪......因为它确实存在并且包含在内。和我的其他 15 个过滤器一样。

Fatal error: Uncaught exception 'Twig_Error_Syntax' with message 'The function "documentURL" does not exist in "profile.html" at line 78'

我请求过滤器的方式是否错误? (可能是的...)

php symfony twig twig-filter
2个回答
16
投票

您尝试像函数一样调用过滤器。树枝过滤器和函数之间存在差异。您应该将过滤器称为

{{ value|filterName(param) }}
。所以在你的情况下:

{{ booking.docId|documentURL(user.id)}}

0
投票

除了 NHG 的答案之外,这里还有 PHP 代码:

public function getFilters(): array {
    return [
        new TwigFilter('documentURL', [$this, 'documentURL']),
    ];
}

public function documentURL($DocumentId, $UserId){

}
© www.soinside.com 2019 - 2024. All rights reserved.