我有2个字段(fieldA和fieldB)
我想要的: - 如果fieldA包含某些内容,则不应显示fieldB
我尝试的是什么:
<span tal:replace="here/getFieldA" />
<span tal:omit-tag="here/getFieldA" tal:replace="here/getFieldB" />
所以它不起作用
感谢您的帮助
答案 0 :(得分:4)
您要找的是tal:condition
,可能与not:
和exists:
前缀相结合:
<span tal:replace="here/getFieldA" />
<span tal:condition="not:exists:here/getFieldA" tal:replace="here/getFieldB" />
或者,您可以使用|
operator作为if运算符,测试第一个元素的存在。如果它不存在,它将使用下一个表达式,依此类推:
<span tal:replace="here/getFieldA | here/getFieldB" />
tal:omit-tag
属性意味着非常不同。如果它的表达式求值为True
,那么输出中将省略标记,只有标记本身。最好用一个例子说明这一点:
<span tal:omit-tag="">
<i>This part will be retained</i>
</span>
渲染该页面模板导致:
<i>This part will be retained</i>
省略了周围的<span>
标记,但保留了内容。
答案 1 :(得分:1)
尝试
<span tal:condition="here/getFieldA" tal:replace="here/getFieldB" />
Zope页面模板参考http://docs.zope.org/zope2/zope2book/AppendixC.html
答案 2 :(得分:1)
这是对原始答案的改进,基于以下评论:
<tal:block
tal:define="zone here/getZoneintervention;
thezone python:', '.join(zone);
dep here/getDepartements;
thedep python:', '.join(dep)">
<span tal:condition="zone" tal:replace="thezone" />
<span tal:condition="not:zone" tal:replace="thedep" />
</tal:block>