Pagelet and LayoutTemplate recursion

Christian Zagrodnick <[email protected]>
Newsgroups gmane.comp.web.zope.zope3
Message-ID <[email protected]>
Hi,

there is a recursion problem with Pagelets and layout templates when 
you don't register a template for the pagelet.

A layout template could be registered as follows (from z3c.formdemo):

  <z3c:layout
      for="*"
      layer="z3c.formdemo.layer.IDemoBrowserLayer"
      template="template.pt"
      />

This registers an adapter providing ILayoutTemplate.

The BrowserPagelet's render method retrieves the template for the 
pagelet's contents (i.e. not the outer wrap) as follows:

            template = zope.component.getMultiAdapter(
                (self, self.request), IPageTemplate)

The problem is, that ILayoutTemplate is derived from IPageTemplate. 
This is why the pagelet tries to render its contents with the layout 
template.

I'm not sure what to do about this.

a) Explicitly check that the template is *not* an ILayoutTemplate in 
BrowserPagelet.render

b) make <z3c:template> use another interface which is also derived from 
IPageTemplate and use the new interface in BrowserPagelet.render.

c) ... ?


Comments, remarks?

-- 
Christian Zagrodnick

gocept gmbh & co. kg  ·  forsterstrasse 29 · 06112 halle/saale
www.gocept.com · fon. +49 345 12298894 · fax. +49 345 12298891
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.