如何检查PhalconPHP伏特中的某个数字是否为in_array?

时间:2017-03-09 16:05:22

标签: arrays phalcon volt

我正在寻找伏特中的in_array函数等价。 还有另一种方法吗?

{% for modelObj in modelList %}

  {% if modelObj.getId() in modelIdCheckedList %}
    {{ check_field('id[]', 'value':modelObj.id, 'checked': true) }}
  {% else %}
    {{ check_field('id[]', 'value':modelObj.id, 'checked': null) }}
  {% endif %}

{% endfor %}

我需要做这样的事情

{{ check_field('id[]', 'value':modelObj.id, 'checked': in_array(modelObj.getId(), modelIdCheckedList )) }}

你能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

有两种方法可以实现这一目标。

使用函数

in_array注册为Volt理解的功能。在Volt注册中,您需要将函数添加到编译器,如下所示:

$volt = new Phalcon\Mvc\View\Engine\Volt($view, $diContainer);
$volt->setOptions( .... );
$volt->getCompiler()->addFunction(
    'in_array',
    function ($parameters) {
        return 'in_array(' . $parameters . ')';
    }
);

使用扩展

您还可以注册PHP函数扩展,这将允许所有PHP函数在Volt中工作。

创建您的扩展程序

class PhpFunctionExtension
{
    /**
     * This method is called on any attempt to compile a function call
     */
    public function compileFunction($name, $arguments)
    {
        if (function_exists($name)) {
            return $name . "(". $arguments . ")";
        }
    }
}

在Volt编译器中注册

$volt = new Phalcon\Mvc\View\Engine\Volt($view, $diContainer);
$volt->setOptions( .... );
$volt->getCompiler()->addExtension(new PhpFunctionExtension());

https://docs.phalconphp.com/en/latest/reference/volt.html#extending-volt https://docs.phalconphp.com/en/latest/reference/volt.html#extensions

答案 1 :(得分:0)

使用in运算符:

{{ modelObj.getId() in modelIdCheckedList }}

所以您可以执行以下操作:

{{ check_field('id[]', 'value': modelObj.id, 'checked': modelObj.getId() in modelIdCheckedList }}

来源:Volt - Other Operators