我正在 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 中。有任何想法吗?
最佳答案
如果其他人需要它,一个有效的答案是:
<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。
关于conditional - 如何有条件地在 TAL (PHPTAL) 中添加 id 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3734822/