Состояние в зависимости от другого поля

У меня есть 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>
Другие вопросы по тегам