【问题标题】:How to check if some number is in_array in PhalconPHP volt?如何检查 Phalcon PHP volt 中的某个数字是否为 in_array?
【发布时间】:2017-07-30 17:11:44
【问题描述】:

我正在寻找以伏特为单位的 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 )) }}

你能帮帮我吗?

【问题讨论】:

    标签: arrays phalcon volt


    【解决方案1】:

    有两种方法可以实现。

    使用函数

    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

    【讨论】:

      【解决方案2】:

      使用in 运算符:

      {{ modelObj.getId() in modelIdCheckedList }}
      

      所以你可以这样做:

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

      来源:Volt - Other Operators

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-22
        相关资源
        最近更新 更多