Dennis Nichols wrote:
> I'm having trouble using the value of a property to determine which
> object to render (Zope 2.2.1, if it makes any difference). Starting from
> the beginning, let's say I have two folders A and B with four DTML
> methods (Nilo, Alpha, Smalpha, and Bravo):
> From Alpha, I can render Nilo, Smalpha, and Bravo by using this dtml:
> <dtml-var Nilo> (or <dtml-var "Nilo">)
> <dtml-var Smalpha> (or <dtml-var "Smalpha">)
> <dtml-var "B.Bravo"> (not <dtml-var B.Bravo>!)
> OK, now I want a property of folder A, call it 'choice', to determine
> what should be rendered by Alpha. So I rewrite Alpha to include:
> either <dtml-var "_[choice]">
> or <dtml-var "_.getitem(choice)">
> These work nicely if I set 'choice' to 'Nilo' or 'Smalpha' but I don't
> see how to make either one work for Bravo! Setting 'choice' to 'B.Bravo'
> gives me:
> Error Type: KeyError
> Error Value: B.Bravo
> How do I get this to work for Bravo (and still keep it working for the
> other cases)? Clearly my zen needs some tending to.
You can use restrictedTraverse('slash/delimited/path')
If you have a slash at the start, the traversal starts from the Zope
root object. Otherwise, it is relative.
You can also use a sequence to represent your path. The slash at the
start is represented by an empty string at the beginning of your sequence.
See the documentation on the interfaces Wiki.
Also, see lib/python/OFS/Traversable.py
Zope maillist - [EMAIL PROTECTED]
** No cross posts or HTML encoding! **
(Related lists -