2010-09-17 8 views
7

Estoy creando un archivo de plantilla de elementos de formulario en PHPTAL. Me gustaría ser capaz de opcionalmente pase en un atributo id para un campo ...¿Cómo añado de manera condicional un atributo de identificación en TAL (PHPTAL)?

Hasta ahora, el código es el siguiente:

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

Esto funciona como se anuncia. Lo que me gustaría añadir es algo, como

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

que me permita opcionalmente pase en un ID de la llamada METAL ...

debería hacer de manera diferente? Intenté usar PHP: isset(id) ? $id : NULL y sus variaciones, pero acabo obteniendo un id="0" en el HTML resultante.

¿Alguna idea?

Respuesta

4

En caso de que nadie más lo necesita, es una respuesta de trabajo:

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

Dónde pasó en las variables son la identificación, nombre, un campo de matriz llamada, y hideLabel.

Tenga en cuenta que también he logrado simplificar la prueba de etiqueta a algo que creo que es más idiomáticamente TAL.

3

Conjunto VAR en un DIV que contiene el elemento que pronto será utilizado:

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

en PHP:

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

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