Состояние в зависимости от другого поля
У меня есть 2 поля (fieldA и fieldB)
что я хочу: - если поле A содержит что-то, то поле B не должно отображаться
что я пытаюсь:
<span tal:replace="here/getFieldA" />
<span tal:omit-tag="here/getFieldA" tal:replace="here/getFieldB" />
так что не работает
Спасибо за вашу помощь
3 ответа
То, что вы ищете, это tal:condition
возможно в сочетании с not:
а также exists:
префиксы:
<span tal:replace="here/getFieldA" />
<span tal:condition="not:exists:here/getFieldA" tal:replace="here/getFieldB" />
Кроме того, вы можете использовать |
оператор, который действует как оператор 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>
тег был опущен, но содержимое было сохранено.
Пытаться
<span tal:condition="here/getFieldA" tal:replace="here/getFieldB" />
Справочник шаблонов страниц Zope http://docs.zope.org/zope2/zope2book/AppendixC.html
Это уточнение исходного ответа, основанное на комментариях:
<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>