【问题标题】:phalcon volt bitwise operatios?phalcon伏按位运算?
【发布时间】:2016-02-26 09:14:31
【问题描述】:

我需要在 volt 模板中运行以下逻辑,但它似乎不支持它。任何关于解决方法的想法?

{% for index, p_key in partner_var %}
 <input id="{{ key }}[]" name="{{ key }}[]" value="{{ p_key.id }}" type="checkbox"  
{% if user.p_body  & (1 << (p_key.id - 1)) %}
   checked
{% endif %}>
{{ p_key.title }} 

因错误而失败 ' (1

) 之前的扫描错误

【问题讨论】:

    标签: php model-view-controller phalcon volt


    【解决方案1】:

    你是对的,Volt 不支持位运算符。一种解决方法是在声明 voltService 时创建函数:

    $di->setShared('view', function() {
    
        $view = new \Phalcon\Mvc\View();
    
        $view->registerEngines(array(
            '.volt' => 'voltService'
        ));
    
        return $view;
    });
    
    $di->set('voltService', function ($view, $di) {
        // ...
    
        $volt = new Phalcon\Mvc\View\Engine\Volt($view, $di);
        // ...
    
        $compiler = $volt->getCompiler();
    
        $compiler->addFunction('bit_and', function($resolvedArgs, $exprArgs) use ($compiler) {
    
            return sprintf(
                '(%s & %s)',
                $compiler->expression($exprArgs[0]['expr']),
                $compiler->expression($exprArgs[1]['expr'])
            );
    
        });
    
        return $volt;
    });
    

    在 Volt 模板中用作函数

    {% if bit_and(2, keyword.getFlags()) %}
        checked="checked"
    {% endif %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      相关资源
      最近更新 更多