[Zope] Passing parameters using DTML
J Cameron Cooper
zope-l at jcameroncooper.com
Fri Jun 17 16:19:58 EDT 2005
> John Poltorak wrote:
>
>> On Fri, Jun 17, 2005 at 07:09:04PM +0200, Dieter Maurer wrote:
>>
>>> Tino Wildenhain wrote at 2005-6-17 10:57 +0200:
>>>
>>>> ...
>>>> Not at all. You could either have tried
>>>> it out ;) Or looked at the DTML documentation
>>>> in the Zope book *wink* ;)
>>>>
>>>> <dtml-var expr="somemethod(parm1=value1,parm2=value2)">
>>>
>>>
>>> Be warned: this is likely to cause loss of the namespace.
>>> Do not forget to pass the two positional arguments (usually
>>> as "None, _"). They are essential.
>>>
>>> For more details, read "Calling DTML Objects" of
>>>
>>> <http://www.dieter.handshake.de/pyprojects/zope/book/chap3.html>
>>
>>
>> That looks useful.
>>
>> Is there also something which explains how to call ZPTs from a DTML
>> object?
>>
>> I'm unable to pick up a passed parameter.
>>
>> This is what I've conjured up:-
>>
>> python:here.lib.parse_file(file=context.options['parm'],sepr=',',clone=1)">
>>
>> hoping that "options['parm']" would get resolved as "ABC" but it
>> doesn't.
>>
>> Any ideas?
>
When you call a ZPT like::
context.somePT(dog="beagle")
you can get to it in the template like::
options/dog
or::
python:options.dog
or::
python:getattr(options,'dog')
or maybe even::
python:options['dog']
Note that in the last two, I didn't need to know the name of the
parameter at coding time, but could find it at runtime. If I have::
tal:define="att string:dog"
then I can do::
python:getattr(options,att)
The 'options' name is not contained in context. It is it's own
first-class namespace.
If 'parse_file' above is a ZPT, you can ask for options/file,
options/sepr, and options/clone.
--jcc
--
"Building Websites with Plone"
http://plonebook.packtpub.com/
Enfold Systems, LLC
http://www.enfoldsystems.com
More information about the Zope
mailing list