phalcon伏特按位运算?
phalcon volt bitwise operatios?
我需要 运行 伏特模板中的以下逻辑,但它似乎不支持它。关于解决方法的任何想法?
{% 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 << (p_key.id.
之前的扫描错误
你说得对,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 %}
我需要 运行 伏特模板中的以下逻辑,但它似乎不支持它。关于解决方法的任何想法?
{% 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 << (p_key.id.
之前的扫描错误你说得对,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 %}