2010-09-17 25 views
7

Je crée un fichier modèle d'éléments de formulaire dans PHPTAL. Je voudrais être en mesure de passer dans un Optionnellement attribut id pour un champ ...Comment est-ce que j'ajoute conditionnellement un attribut d'identification dans TAL (PHPTAL)?

Jusqu'à présent, le code ressemble à ceci:

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

Cela fonctionne comme annoncé. Ce que je voudrais ajouter quelque chose, comme

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

pour me permettre de passer dans un optionnellement les id de l'appel METAL ...

dois-je faire différemment? J'ai essayé d'utiliser PHP: isset(id) ? $id : NULL et ses variantes, mais juste se retrouver avec un id="0" dans le HTML résultant.

Des idées?

Répondre

4

Au cas où quelqu'un d'autre a besoin il, une réponse de travail est:

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

Où passé dans les variables sont id, nom, un tableau champ nommé et hideLabel. Notez, que j'ai également réussi à simplifier le test d'étiquette à quelque chose que je crois être plus idiomatique TAL.

3

Set VAR à un DIV contenant le bientôt élément utilisé:

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