0

我有一个自定义函数被添加到 Twig 对象中,如下所示:

...
    add_filter('get_twig', array(get_class(),'add_twig_functions'));
...

public static function add_twig_functions($twig)
{
    $twig->addFunction(new Twig_SimpleFunction('get_table', array(get_class(), 'get_table')));

    return $twig;
}

...

public static function get_table($cycle, $visible = true, $id = null)
{
    ....
}

在树枝模板中,我试图这样称呼它:

{{ get_table('mth', user_data.cycle = 'Monthly', 'table-mth') }}

但是我收到一个错误:

PHP致命错误:未捕获的异常'Twig_Error_Syntax'带有消息'参数名称必须是字符串,给定“Twig_Node_Expression_GetAttr”

我的预期结果是,如果上下文变量等于“每月”,则$visible参数作为 true 传递,但显然我没有正确执行。user_data.cycle

我还尝试将我的电话更改为:

{{ get_table('mth', (user_data.cycle = 'Monthly'), 'table-mth') }}

然而,这只是给了我:

PHP致命错误:未捕获的异常'Twig_Error_Syntax'带有消息'打开的括号没有正确关闭。值“=”的意外标记“运算符”(“标点符号”应为值“)”)

是否有预期的方法将布尔表达式传递给 twig 函数?Timber 的版本是 1.1.6,物有所值。到目前为止,我能够找到的关于函数扩展的所有文档都位于http://twig.sensiolabs.org/doc/advanced.html,但它并没有真正涵盖参数。

4

1 回答 1

0

好吧,这只是我记错了 twig 中的比较是如何工作的……我的印象是=Twig 中相当于 PHP ==,而==twig 中相当于 PHP ===,但我不知道我从哪里得到这种印象,因为它是错误的.

{{ get_table('mth', (user_data.cycle == 'Monthly'), 'table-mth') }}

工作正常,符合预期。有一个毫无意义的故障排除时间。

于 2016-10-20T23:14:32.803 回答