Вопрос: Я точно знаю, что id объекта = XXX, но сравнение
<dtml-if "id == 'XXX'"> выдает false. В чем дело?
Ответ: Проблема заключается в том, что иногда id не
строка, а функция, которую еще надо вызвать. То есть в Вашем случае это
будет <dtml-if "id() == 'XXX'">.
Для того, чтобы не разбираться каждый раз отдельно, является ли id
строкой или функцией, Вы можете
заставить Zope выдавать строку или вызывать функцию:
<dtml-if "_['id'] == 'XXX'">.
Конструкция _['id'] автоматически рендерит объект, имя которого передано
(в даном случае id). Это эквивалентно
_.getitem('id', 1). Примечание. _.getitem('id', 0)
вернет сам объект, без его насильственного вызова.
Примечание 2. В Zope 2.3 будет введен интерфейс getId().
|