Состояние в зависимости от другого поля - PullRequest
2 голосов
/ 09 марта 2011

у меня есть 2 поля (fieldA и fieldB)

что я хочу: - если поле A содержит что-то, то поле B не должно отображаться

что я пытаюсь:

<span tal:replace="here/getFieldA" />

<span tal:omit-tag="here/getFieldA"  tal:replace="here/getFieldB" />

так что не работает

спасибо за вашу помощь

Ответы [ 3 ]

4 голосов
/ 09 марта 2011

То, что вы ищете, это 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> был опущен, но содержимое было сохранено.

1 голос
/ 09 марта 2011

Это уточнение исходного ответа, основанное на комментариях:

<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>
1 голос
/ 09 марта 2011

Попробуйте

<span tal:condition="here/getFieldA"  tal:replace="here/getFieldB" />

Справочник шаблонов страниц Zope http://docs.zope.org/zope2/zope2book/AppendixC.html

...