Как условно добавить атрибут id в TAL (PHPTAL)?
Я создаю файл шаблона элементов формы в PHPTAL. Я хотел бы иметь возможность опционально передать атрибут id для поля...
Пока код выглядит так:
<xml>
<tal:block metal:define-macro="text">
<label tal:condition="php: !isset(hideLabel) || isset(hideLabel) && !hideLabel">${field/label}</label>
<input name="${name}" type="text" value="${field/value}" />
<p tal:condition="exists:field/error">${field/error}</p>
</tal:block>
</xml>
Это работает как рекламируется. Я хотел бы добавить что-то вроде
<input name="${name}" tal:attributes="id exists: id $id | $name" value="${field/value}" />
чтобы я мог при желании передать идентификатор из вызова METAL...
Должен ли я делать это по-другому? Я пытался использовать PHP: isset(id) ? $id : NULL
и их вариации, но просто в конечном итоге с id="0"
в результирующем HTML.
Есть идеи?
3 ответа
Если кому-то еще это нужно, один рабочий ответ:
<xml>
<tal:block metal:define-macro="text">
<label tal:condition="not: exists:hideLabel">${field/label}</label>
<input name="${name}" tal:attributes="id id | nothing" type="text" value="${field/value}" />
<p tal:condition="exists:field/error">${field/error}</p>
</tal:block>
</xml>
В переменные передаются id, name, массив с именем field и hideLabel .
Обратите внимание, что мне также удалось упростить тест метки до чего-то, что я считаю более идиоматически TAL.
Установите VAR на DIV, содержащий элемент, который скоро будет использоваться:
div class="" tal:define="VAR context.property"
div class="" tal:attributes="class python:'grid_8 omega' if VAR else 'grid_8 alpha'"
В PHP:
<div id="contentCenter" tal:attributes="id
php:isset(variable)&&isset(variable.property)?'IDVALUE':NULL">