2010-09-17 9 views
7

Sto creando un file modello di elementi modulo in PHPTAL. Vorrei essere in grado di Opzionalmente passaggio in un attributo id per un campo ...Come aggiungere un attributo id in TAL (PHPTAL) in modo condizionale?

Finora il codice simile a questo:

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

Questo funziona come pubblicizzato. Quello che mi piacerebbe aggiungere è qualcosa, come

<input name="${name}" tal:attributes="id exists: id $id | $name" value="${field/value}" /> 

per permettermi di opzionalmente passare in un id dalla chiamata METAL ...

dovrei fare in modo diverso? Ho provato a utilizzare PHP: isset(id) ? $id : NULL e le relative varianti, ma ho appena finito con un id="0" nel codice HTML risultante.

Qualche idea?

risposta

4

Nel caso in cui nessun altro ha bisogno, una risposta di lavoro è:

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

Dove passò nelle variabili sono id, nome, un campo di matrice di nome, e hideLabel.

Nota che sono anche riuscito a semplificare il test dell'etichetta a qualcosa che ritengo sia più idiomatico del TAL.

3

Set VAR in un DIV che contiene l'elemento che sarà presto utilizzato:

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

in PHP:

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

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