Как условно добавить атрибут id в TAL (PHPTAL)? - PullRequest
8 голосов
/ 17 сентября 2010

Я создаю файл шаблона элементов формы в 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 ]

4 голосов
/ 17 сентября 2010

Если кому-то еще это нужно, один рабочий ответ:

<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.

3 голосов
/ 26 июля 2011

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

div class="" tal:define="VAR context.property"
    div class="" tal:attributes="class python:'grid_8 omega' if VAR else 'grid_8 alpha'"
0 голосов
/ 10 мая 2013

в PHP:

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

php:isset(variable)&&isset(variable.property)?'IDVALUE':NULL">
...