Juho Vuori wrote:
A newbieish question. I thought <dtml-var foo> and <dtml-var expr="foo()"> were the same thing. Seems they are not: Depending on the way foo is called something differs in the environment they run in.
Given the following situation:
I have an dtml-method foo = <dtml-var bar>
And dtml-method bar <dtml-var baz>
Plus a third method baz <p>Pazaa!</p>
Now viewing foo does exactly what you think it does: It goes calls bar which calls baz which returns the text <p>Pazaa!</p>
Now change the first method foo: <dtml-var expr="bar()">
And you'll get KeyError: baz
Does somebody understand what is going on?
My real-world situation is that I need to specify a path, which as far as I know forces me to use the expr="Pat.to.my.bar()" alternative. Or does it not?
Part of the DTML magic is that it needs a namespace given to it. When you use the first syntax, this is done automagically. When you use the second, no magic is done, so you're required to do it. Take a look for documents explaining how to call DTML from ZPT for examples. (This sort of confusion is one of many reasons I will usually recommend against DTML.) You can get a specific object's namespace on the top using dtml-with, btw. --jcc -- "My point and period will be throughly wrought, Or well or ill, as this day's battle's fought."