передача результата логического выражения в функцию ветки

У меня есть пользовательская функция, которая добавляется к объекту Twig следующим образом:

...
add_filter('get_twig', array(get_class(),'add_twig_functions'));
...

public static function add_twig_functions($twig)
{
$twig->addFunction(new Twig_SimpleFunction('get_table', array(get_class(), 'get_table')));

return $twig;
}

...

public static function get_table($cycle, $visible = true, $id = null)
{
....
}

Внутри шаблона ветки я пытаюсь назвать его так:

{{ get_table('mth', user_data.cycle = 'Monthly', 'table-mth') }}

Однако я получаю сообщение об ошибке:

Неустранимая ошибка PHP: необработанное исключение Twig_Error_Syntax с сообщением
‘Имя параметра должно быть строкой, задано «Twig_Node_Expression_GetAttr»

Мой предполагаемый результат заключается в том, что $visible параметр передается как true, если user_data.cycle переменная context равна ‘Monthly’, но, очевидно, я делаю это неправильно.

Я также попытался изменить свой вызов на:

{{ get_table('mth', (user_data.cycle = 'Monthly'), 'table-mth') }}

Однако это только дает мне:

Неустранимая ошибка PHP: необработанное исключение Twig_Error_Syntax с сообщением
«Открытая скобка закрыта неправильно. Неожиданный маркер
«operator» of value «=» (ожидается «пунктуация» со значением «)»)

Есть ли ожидаемый способ передачи логического выражения в функцию ветки? Timber на версии 1.1.6, для чего это стоит. Вся документация, которую я смог найти по расширению с помощью функций, находится на http://twig.sensiolabs.org/doc/advanced.html, но на самом деле это не распространяется на параметры.

0

Решение

Ну, это только я не помню, как сравнения в ветке … У меня сложилось впечатление, что = в Twig был эквивалент PHP ==, а также == в ветке был эквивалент PHP ===Но я не знаю, откуда у меня такое впечатление, потому что это неправильно.

{{ get_table('mth', (user_data.cycle == 'Monthly'), 'table-mth') }}

работает нормально и как положено. Там идет бессмысленный час поиска неисправностей.

0

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

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

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