Re: [Zope] calling methods for each object in a list
Philipp Dunkel schrieb: [...]
when I do a
<dtml-in ids> <dtml-var sequence-item> </dtml-in>
it prints out the ids of the checked objects fine, but when I try a
<dtml-in ids> <dtml-call "sequence-item.foo"> </dtml-in>
he doesn't know sequence-item anymore
No, Zope can't, especially Python can't, because it trys to evaluate something like sequence - item.foo.
So try
<dtml-with sequence-item> <dtml-call "foo"> </dtml-with
or:
<dtml-call "_.['sequence-item'].foo">
Hm. In the example <dtml-in list> <dtml-var foo> </dtml-in> the iteration will change the namespace to that of each sequence-item automatically. So the foo asked for will always be the foo of the current sequence-item. Things like <with sequence-item> or "_['sequence-item']..." are not necessary. If you iteration is by a number of IDs, as your question suggests, though, the example is not enough. When you iterate over a list of IDs, the sequence-item will be an ID (that is a string) and foo will have no meaning (it will throw an AttributeError). There are two way of remediating this: preferrably use objectValues(), like so <dtml-in objectValues> <dtml-var foo> </dtml-in> If you _have_ to use a list of ids, things get more complicated <dtml-in Ids> <dtml-var "_.getitem(_['sequence-item'].foo)"> </dtml-in> (sorry about that) All code is untested, but it should work. Rik
participants (1)
-
Rik Hoekstra