Как бы вы делали троичные условия внутри {%%} в Twig? - PullRequest
0 голосов
/ 10 декабря 2018

Я хочу отобразить параметры, если они существуют, но не могу найти способ его правильного отображения и продолжаю получать Открытая скобка закрыта неправильно.Неожиданный токен «пунктуация» значения «:» («пунктуация» ожидается со значением «)»)

где

{% setcontent records = 'properties' where
{filter:search_term,
((classification) ? ('classification':classification):(''))
} printquery  %}

1 Ответ

0 голосов
/ 10 декабря 2018

Чтобы использовать его внутри Bolt CMS, сначала определите ваши параметры, а затем передайте их Bolt CMS

{% set options = { filter: search_term , } %}
{% if classification is defined and classification|trim != '' %}
    {% set options = options|merge({classification:classification,}) %}
{% endif %}

{% setcontent records = 'properties' where options printquery  %}

Перечитав свой вопрос, вы, вероятно, ищете что-то вроде этого,

{% set records %}
'properties' where { 
    filter : '{{ search_term }}',
    classification: '{{ classification is defined ? classification : '' }}',
} printquery  %}
{% endset %}

{{ records }}

Однако использование фильтра default здесь более подходит, чем использование троичного оператора,

{% set records %}
'properties' where { 
    filter : '{{ search_term }}',
    classification: '{{ classification|default('') }}',
} printquery  %}
{% endset %}

{{ records }}

demo


Чтобы пропустить свойства, вы должны использовать следующее:

{% set records %}
'properties' where { 
    filter : '{{ search_term }}',
    {% if classification is defined and classification|trim != '' %}classification: '{{ classification }}',{% endif %}
} printquery  %}
{% endset %}

...