2010-09-17 6 views
7

Я создаю файл шаблонов элементов формы в PHPTAL. Я хотел бы быть в состоянии опционального в атрибуте идентификатора поля ...Как условно добавить атрибут id в TAL (PHPTAL)?

Пока код выглядит следующим образом:

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

Любые идеи?

ответ

4

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

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

Где проходили в переменных идентификатор, имя, поле массива с именем, и hideLabel.

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

3

Набор ВАР в DIV, содержащий в ближайшее время будет использоваться элемент:

div class="" tal:define="VAR context.property" 
    div class="" tal:attributes="class python:'grid_8 omega' if VAR else 'grid_8 alpha'" 
0

в РНР:

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

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