Условный оператор в Мако с использованием пилонов - PullRequest
1 голос
/ 21 мая 2010

В PHP я часто использую условный оператор для добавления атрибута в элемент html, если он применяется к рассматриваемому элементу. Например:

<select name="blah">
    <option value="1"<?= $blah == 1 ? ' selected="selected"' : '' ?>>
        One
    </option>
    <option value="2"<?= $blah == 2 ? ' selected="selected"' : '' ?>>
        Two
    </option>
</select>

Я начинаю проект с Pylons, используя Мако для шаблонов. Как мне добиться чего-то похожего? Прямо сейчас я вижу две возможности, которые не идеальны.

Решение 1:

<select name="blah">
    % if blah == 1:
    <option value="1" selected="selected">One</option>
    % else:
    <option value="1">One</option>
    % endif
    % if blah == 2:
    <option value="2" selected="selected">Two</option>
    % else:
    <option value="2">Two</option>
    % endif
</select>

Решение 2:

<select name="blah">
    <option value="1"
    % if blah == 1:
        selected="selected"
    % endif
    >One</option>
    <option value="2"
    % if blah == 2:
        selected="selected"
    % endif
    >Two</option>
</select>

В данном конкретном случае значение равно проверенной переменной (value = "1" => blah == 1), но я использую тот же шаблон в других ситуациях, например <?= isset($variable) ? ' value="$variable" : '' ?>.

Я ищу чистый способ добиться этого с помощью Мако.

1 Ответ

5 голосов
/ 21 мая 2010

Если работает Python, «троичный оператор» равен

# condition ? trueValue : falseValue
trueValue if condition else falseValue
...