将布尔表达式的结果传递给twig函数

时间:2016-10-20 22:55:00

标签: php twig expression timber

我有一个自定义函数,它被添加到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上下文变量等于'Monthly',user_data.cycle参数将传递为true,但显然我没有正确执行。

我也尝试将我的电话改为:

{{ 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,但它并没有真正涵盖参数。

1 个答案:

答案 0 :(得分:0)

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

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

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