Hi to everybody, I have a simple dtml-method "assignment-action" that is called upon a form post. Depending on the form request data, a <dtml-if> chooses between one of two dtml-documents : "assigment-success" and "assignment-failure" : <dtml-if "iscorrect()"> <dtml-var assignment-success> <dtml-else> <dtml-var assignment-failure> </dtml-if> My trouble is that neither the "assignment-success" nor the "assignment-failure" dtml-documents seem to be pushed on the namespace : inside them title_or_id references data from their caller, this() and PARENTS do not evaluate right... is there a smarter way to call a dtml-document inside a dtml-method (), so that it it pushed on the namespace stack? Should I use somehow the <dtml-with> tag? I understand that page templates would be way easier and cleaner, but I would like to complete this project and then try them out in the next one... thank you in advance, Luca
Luca Dall'Olio wrote:
Hi to everybody,
I have a simple dtml-method "assignment-action" that is called upon a form post. Depending on the form request data, a <dtml-if> chooses between one of two dtml-documents : "assigment-success" and "assignment-failure" :
<dtml-if "iscorrect()"> <dtml-var assignment-success> <dtml-else> <dtml-var assignment-failure> </dtml-if>
My trouble is that neither the "assignment-success" nor the "assignment-failure" dtml-documents seem to be pushed on the namespace : inside them title_or_id references data from their caller, this() and PARENTS do not evaluate right... is there a smarter way to call a dtml-document inside a dtml-method (), so that it it pushed on the namespace stack? Should I use somehow the <dtml-with> tag?
I understand that page templates would be way easier and cleaner, but I would like to complete this project and then try them out in the next one...
thank you in advance, Luca
Luca, Not sure exactly whats going on there ... but there are significant differences between dtml methods and dtml documents and how they view identity. David
Luca Dall'Olio wrote at 2006-3-9 11:47 +0100:
I have a simple dtml-method "assignment-action" that is called upon a form post. Depending on the form request data, a <dtml-if> chooses between one of two dtml-documents : "assigment-success" and "assignment-failure" :
<dtml-if "iscorrect()"> <dtml-var assignment-success> <dtml-else> <dtml-var assignment-failure> </dtml-if>
My trouble is that neither the "assignment-success" nor the "assignment-failure" dtml-documents seem to be pushed on the namespace : inside them title_or_id references data from their caller
That is strange. In fact, a "DTMLDocument" (unlike a "DTMLMethod"!) extends the passed in client by "self.aq_explicit". Note, that due to the use of "aq_explicit", acquisition through your "DTMLDocument" is restricted.
this() and PARENTS do not evaluate right...
"PARENTS" is set after the traversal phase. Lateron, it is not changed -- e.g. not changed by calls of DMTL objects.
is there a smarter way to call a dtml-document inside a dtml-method (), so that it it pushed on the namespace stack?
It should be pushed automatically (as long as it is really a "DTMLDocument". Of course, you can control the context yourself, e.g. by <dtml-var "doc(doc,_)"> In this case, you pass "doc" (assumed to be your DTML document) explicitly as client. -- Dieter
Luca Dall'Olio wrote:
I have a simple dtml-method "assignment-action" that is called upon a form post.
Why are you torturing yourself with DTML? I'd urge you to try Python Scripts and Page Templates instead! cheers, Chris -- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk
participants (4)
-
Chris Withers -
David -
Dieter Maurer -
Luca Dall'Olio