Frans C.H. Schneider writes:
Frans C.H. Schneider writes:
... <dtml-let ps_comp=ps_par> <dtml-tree id=ps_comp branches_expr="ps_childLookup(ps_par=ps_comp)"> <b><dtml-var ps_comp></b> <dtml-var ps_start> </dtml-tree> </dtml-let>
It works for the first time but when I try to expand it I get a key error on ps_par.
What goes wrong?? I do not have an answer for your question.
But you should get a traceback and this traceback should tell you where the "KeyError" is detected. This may give you a hint... ... This is the traceback.
Error Type: KeyError Error Value: ps_par
Traceback (innermost last): .... (Object: bmpsiq) File /opt/Zope-2.4.2-src/lib/python/DocumentTemplate/DT_Let.py, line 146, in render (Object: ps_comp=ps_par) KeyError: (see above)
I guess this has to do with the ps_par not being in the namespace the moment I try to expend the tree: it was passed from the calling screen in the first place. If I replace the line with dtml-let ps_comp=ps_par> with dtml-let ps_comp="'partnumber I know'"> it works fine for the item I specify with the partnumber. I think, I understand:
* "ps_par" is a parameter that comes from the request. * When you enter your DTML object for the first time, then the request contains a "ps_par" from the form * When you expand a node in the tree, you create a new request, but this one is lacking the "ps_par" parameter... Your options: * There is an "urlparam_expr" patch for Zope's TreeTag somewhere on zope.org that would allow you to write: <dtml-tree .... urlparam_expr="'ps_par=%s' % ps_par" ...> to pass the parameter (this assumes, your "ps_par" does not contain characters invalid in query strings. Otherwise, you would need to "url_quote_plus" the value.... * You can use a cookie to pass the value around as I did it in my "DocFinder" product <http://www.dieter.handshake.de/pyprojects/zope> This assumes, your "ps_par" does not contain characters invalid in cookies... * If you use sessions anyway, you can store your "ps_par" in a session object. Dieter