Как условно добавить атрибут 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.

Есть идеи?


person Dycey    schedule 17.09.2010    source источник


Ответы (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, именованное поле массива и hideLabel .

Обратите внимание, что мне также удалось упростить тест этикетки до чего-то, что, как мне кажется, более идиоматически TAL.

person Dycey    schedule 17.09.2010

Установите VAR в DIV, содержащем элемент, который скоро будет использоваться:

div class="" tal:define="VAR context.property"
    div class="" tal:attributes="class python:'grid_8 omega' if VAR else 'grid_8 alpha'"
person nerdfiles    schedule 26.07.2011

в PHP:

<div id="contentCenter" tal:attributes="id 

php:isset(variable)&&isset(variable.property)?'IDVALUE':NULL">
person Michal - wereda-net    schedule 10.05.2013