8

我正在 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}" />

允许我有选择地从 METAL 调用中传入一个 id...

我应该采取不同的做法吗?我已经尝试过使用PHP: isset(id) ? $id : NULL它的变体,但最终id="0"在生成的 HTML 中得到了一个。

有任何想法吗?

4

3 回答 3

5

如果其他人需要它,一个可行的答案是:

<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、name、名为 field 的数组和 hideLabel。

请注意,我还设法将标签测试简化为我认为更惯用的 TAL。

于 2010-09-17T12:16:26.277 回答
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'"
于 2011-07-26T01:10:45.563 回答
0

在 PHP 中:

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

php:isset(variable)&&isset(variable.property)?'IDVALUE':NULL">
于 2013-05-10T10:19:34.017 回答