我正在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>
这与宣传的一样。我想补充的是像
这样的东西<input name="${name}" tal:attributes="id exists: id $id | $name" value="${field/value}" />
允许我选择从METAL调用中传入一个id ...
我应该采用不同的方式吗?我尝试过使用PHP: isset(id) ? $id : NULL
及其变体,但最后只得到了结果HTML中的id="0"
。
有什么想法吗?
答案 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,name,名为field的数组和hideLabel。
请注意,我还设法将标签测试简化为我认为更具惯用性的TAL。
答案 1 :(得分: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'"
答案 2 :(得分:0)
:
<div id="contentCenter" tal:attributes="id
php:isset(variable)&&isset(variable.property)?'IDVALUE':NULL">