如何在 Phalcon 的 .volt 中将变量转换为 int?

How to convert a variable to int in Phalcon's .volt?

我在 .volt (Phalcon) 中有此代码:

{% set foo = myFunction(data, 'data_source', 0) %}

它 return 是非负数,问题是当它为空时我得到 "" 而不是 "0"。我如何强制伏特始终 return intfoo,这样一切都会按预期工作但不会引发 empty variable 错误?

我宁愿避免使用 <?php ... ?>

我一直在浏览 http://voltframework.com/docs 但没有运气。

谢谢。

有两个选项可供选择:

1) 创建自己的电压函数:

$compiler->addFilter(
    'int',
    function ($resolvedArgs, $exprArgs) {
        return 'intval(' . $resolvedArgs . ')';
    }
);

更多信息在这里:https://docs.phalconphp.com/en/latest/reference/volt.html#id2

2) 使用 volt 的内置滤波器。在您的情况下,如果没有 returned 值,您可以使用 DEFAULT fitler 将默认值设置为 0。完整的内置函数列表:https://docs.phalconphp.com/en/latest/reference/volt.html#filters

当然,其他选项是将您的函数修改为始终 return 一个值,或者在 volt 中使用 PHP 语法,这有点难看:)

...还有另一种方法 :) Volt 已实现 php sprintf 函数,名称为 format。所以,你可以这样做:

{% set foo = myFunction(data, 'data_source', 0) %}

The int of "foo" is: {{ "%d"|format(foo) }}

祝你好运!