Условный атрибут PHPTAL
Учитывая металлический макрос, который выглядит так:
<tal:block metal:define-macro="foo">
<option value="1">Foo</option>
<option value="2">Bar</option>
<option value="3">Baz</option>
</tal:block>
И шаблон, который использует макрос, как это:
<select>
<tal:block tal:define="selectedValue 2" metal:use-macro="foo" />
</select>
Что мне нужно добавить к макросу, чтобы полученный HTML-код выглядел так:
<select>
<option value="1">Foo</option>
<option value="2" selected="selected">Bar</option>
<option value="3">Baz</option>
</select>
Я пробовал различные методы, используя php:
выражение и даже определение моей собственной функции СКАЗКИ, но, кажется, ничто не дает мне то, что я ищу.
Браузеры обрабатывают любой вариант, где selected
атрибут отображается как фактически выбранный. Это означает, что selected
, selected=""
, selected="foo"
и т. д. все сделает выбор выбранным. PHPTAL имеет встроенный attribute value | nothing
синтаксис, который разрешает это, но это сводится только к nothing
в том случае, если value
пусто, что мне не помогает, так как мне нужно сравнить его со значением. Примерно так (не работает):
<option value="2" tal:attributes="selected (selectedValue == 2 ? 'selected' : NULL) | nothing">Bar</option>
1 ответ
Этого должно хватить:
tal:attributes="selected php:selectedValue == 2"
PHPTAL знает о таких атрибутах, как selected
а также checked
и преобразует логическое значение в правильное значение.
php:selectedValue == 2 ? 'selected' : NULL
будет работать так же.