[Zope] Re: calling zpt from a script with options

Haim Ashkenazi haim at babysnakes.org
Thu Jan 6 17:40:41 EST 2005


On Thu, 06 Jan 2005 22:54:01 +0100, robert wrote:

> Haim Ashkenazi wrote:
> 
>>Hi
>>
>>forgive me if it's trivial, but I'm a complete zope newbie....
>>
>>I read in the zope book that if I want to call zpt from a script (in my
>>case, to render errors in a form) I do something like this:
>>
>>--
>>script:
>>
>>pt = context.body_content
>>s = pt(zerror="This is an error")
>>return s
>>
>>zpt:
>>
>><i tal:content="options/zerror | default">error</i>
>>--
>>
>>This works without a problem, but it only shows the "body_content" file.
>>this file is part of a layout (inside a folder) and I want to call the
>>folder as the url, so it will acquire the index_html in an upper directory.
>>
>>I tried changing the "pt" variable to context.index_html and calling
>>"here/index_html/options/zerror" in the template but it didn't show. 
>>  
>>
> options are the parameter with the actual template was called with.  
> Therefore
> 
> here/index_html has not options since it is not called as a method.
> If I understand your problem correctly, you shoud do something like:
> 
> script:
> 
> pt = context.index_html
> return pt(zerror="This is an error")
> 
> zpt:
> <div tal:define"error options/zerror | nothing" >  
>   <i tal:content="error"  tal:condition="error" />
>   <div tal:content="structure here/body_content" />
> </div>
If I understand correctly, this will first print the "zerror" variable,
and then the content of here/body_content. I want the error to show in the
body of the form (inside body_content). anyway, I solved it like this:

<td tal:define="zerror options/zerror" 
	tal:content="structure python:here.body_content(zerror = zerror)">
	budy content
</td>

now I can call index_html from the script and add tal:condition (not shown
above) to test for the existence of "options/error" and call body_content
like the example above.

thanx
-- 
Haim




More information about the Zope mailing list