2010-09-17 43 views
7

我在PHPTAL中创建一个表单元素模板文件。我希望能在一个领域的id属性来选择通过......如何在TAL(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}" /> 

,让我在可选从金属调用一个id通...

我应该做不同呢?我已经尝试过使用PHP: isset(id) ? $id : NULL及其变体,但最终只能在最终的HTML中使用id="0"

任何想法?

回答

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> 

凡在变量传递的ID,名称,数组命名的字段,以及hideLabel。

请注意,我也设法简化了标签测试,我相信这是更通俗的TAL。

3

在DIV集VAR包含即将被使用的元素:

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

在PHP:

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

php:isset(variable)&&isset(variable.property)?'IDVALUE':NULL"> 
相关问题