如何在TAL(PHPTAL)中有条件地添加id属性?

Dyc*_*cey 8 conditional phptal template-tal

我正在PHPTAL中创建一个表单元素模板文件.我希望能够OPTIONALLY传入一个字段的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>
Run Code Online (Sandbox Code Playgroud)

这与广告一样有效.我想添加的内容就像是

<input name="${name}" tal:attributes="id exists: id $id | $name" value="${field/value}" />
Run Code Online (Sandbox Code Playgroud)

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

我应该采用不同的方式吗?我已经尝试过使用PHP: isset(id) ? $id : NULL它们的变体,但最后id="0"得到的结果是HTML.

有任何想法吗?

Dyc*_*cey 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>
Run Code Online (Sandbox Code Playgroud)

传入的变量包括 id、name、名为 field 的数组和 hideLabel 。

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