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.
有任何想法吗?
如果其他人需要它,一个可行的答案是:
<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 测试。