Синтаксис Twig 'is not none` - PullRequest
       20

Синтаксис Twig 'is not none`

0 голосов
/ 27 июня 2018

При перегрузке шаблонов форм Symfony я встречал странные проверки в choice_widget_collapsed в form_div_layout.html.twig.

{%- block choice_widget_collapsed -%}
    {%- if required and placeholder is none and not placeholder_in_choices and not multiple and (attr.size is not defined or attr.size <= 1) -%}
        {% set required = false %}
    {%- endif -%}
    <select {{ block('widget_attributes') }}{% if multiple %} multiple="multiple"{% endif %}>
        {%- if placeholder is not none -%}
            <option value=""{% if required and value is empty %} selected="selected"{% endif %}>{{ placeholder != '' ? (translation_domain is same as(false) ? placeholder : placeholder|trans({}, translation_domain)) }}</option>
        {%- endif -%}
        {%- if preferred_choices|length > 0 -%}
            {% set options = preferred_choices %}
            {{- block('choice_widget_options') -}}
            {%- if choices|length > 0 and separator is not none -%}
                <option disabled="disabled">{{ separator }}</option>
            {%- endif -%}
        {%- endif -%}
        {%- set options = choices -%}
        {{- block('choice_widget_options') -}}
    </select>
{%- endblock choice_widget_collapsed -%}

Что означает if placeholder is not none? Я не встречал такого синтаксиса в документации Twig, и, найдя его, я нашел только код, скопированный из одного файла без объяснения причин.

Мне любопытно, почему бы не is not null, is not empty, is defined? Где определяется none?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Тест none - это просто псевдоним для теста null, как видно из расширения ядра из Twig:

public function getTests()
{
    return array(
        new Twig_Test('even', null, array('node_class' => 'Twig_Node_Expression_Test_Even')),
        new Twig_Test('odd', null, array('node_class' => 'Twig_Node_Expression_Test_Odd')),
        new Twig_Test('defined', null, array('node_class' => 'Twig_Node_Expression_Test_Defined')),
        new Twig_Test('same as', null, array('node_class' => 'Twig_Node_Expression_Test_Sameas')),
        new Twig_Test('none', null, array('node_class' => 'Twig_Node_Expression_Test_Null')),
        new Twig_Test('null', null, array('node_class' => 'Twig_Node_Expression_Test_Null')),
        new Twig_Test('divisible by', null, array('node_class' => 'Twig_Node_Expression_Test_Divisibleby')),
        new Twig_Test('constant', null, array('node_class' => 'Twig_Node_Expression_Test_Constant')),
        new Twig_Test('empty', 'twig_test_empty'),
        new Twig_Test('iterable', 'twig_test_iterable'),
    );
}
0 голосов
/ 27 июня 2018

Как указано в документах Twig Null none - псевдоним для null в синтаксисе Twig.

...