phalcon вольт побитовые операции?

Мне нужно запустить следующую логику в шаблонах вольт, однако, похоже, он не поддерживает его. Любые идеи по обходным путям?

{% 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.

5

Решение

Вы правы, 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 %}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]