2010-09-17 42 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"> 
相關問題