In answer to my own question, the EditForm must also inherit from the z3c.formuilayout.FormLayoutSupport class. This code now works:
from z3c.form import form from z3c.formui import layout class IndexForm(layout.FormLayoutSupport, form.EditForm): pass Thanks, Kevin > I am having a problem configuring a layout template. It works with > z3c.form.DisplayForm but not with z3c.form.EditForm. > > formdemo works fine for me. It seems to use an identical approach. > > Thanks, Kevin > > ------------------------------------------------------------------- > Here is the details to recreate the problem: > > http://localhost:8080/++skin++MySkin/@@index.html does not use the > template. > > http://localhost:8080/++skin++MySkin/@@index2.html uses the template. > > I added these packages (setup.py): > > 'z3c.pagelet', > 'z3c.layer', > 'z3c.form', > 'z3c.formui', > > I configured these packages: > > <!-- Add your own component registrations here --> > <include package="zope.viewlet" file="meta.zcml"/> > <include package="zope.contentprovider" /> > <include package="zope.viewlet" /> > > <include package="z3c.form" file="meta.zcml" /> > <include package="z3c.macro" file="meta.zcml" /> > <include package="z3c.pagelet" file="meta.zcml" /> > <include package="z3c.template" file="meta.zcml" /> > > <include package="z3c.form" /> > <include package="z3c.formui" /> > > <include package="z3c.layer.pagelet"/> > <include package="z3c.macro" /> > <include package="z3c.pagelet"/> > > I created a new layer (layer.py): > > from z3c.form.interfaces import IFormLayer > from z3c.layer.pagelet import IPageletBrowserLayer > > class IMyBrowserLayer(IFormLayer, IPageletBrowserLayer): > pass > > And a new skin (skin.py): > > import z3c.formui.interfaces > import layer > > class IMyBrowserSkin(z3c.formui.interfaces.IDivFormLayer, > layer.IMyBrowserLayer): > pass > > I registered the above: > > <interface > interface=".layer.IMyBrowserLayer" > type="zope.publisher.interfaces.browser.IBrowserSkinType" > /> > > <interface > interface=".skin.IMyBrowserSkin" > type="zope.publisher.interfaces.browser.IBrowserSkinType" > name="MySkin" > /> > > I create a layout (template.pt): > > <h1>TEMPLATE</h1> > <tal:block replace="structure provider:pagelet" /> > > I register it: > > <z3c:layout > for="*" > layer=".layer.IMyBrowserLayer" > template="template.pt" > /> > > I create two new pages (browser.py): > > from z3c.form import form > > class IndexForm(form.EditForm): > pass > > class IndexForm2(form.DisplayForm): > pass > > I match these with templates (index.pt and index2.pt): > > index.pt > > index2.pt > > I register the new views: > > <z3c:pagelet > name="index.html" > for="*" > permission="zope.Public" > layer=".layer.IMyBrowserLayer" > class=".browser.IndexForm" > /> > > <z3c:template > template="index.pt" > for=".browser.IndexForm" > layer=".layer.IMyBrowserLayer" > /> > > <z3c:pagelet > name="index2.html" > for="*" > permission="zope.Public" > layer=".layer.IMyBrowserLayer" > class=".browser.IndexForm2" > /> > > <z3c:template > template="index2.pt" > for=".browser.IndexForm2" > layer=".layer.IMyBrowserLayer" > /> > > > _______________________________________________ > Zope3-users mailing list > Zope3-users@zope.org > http://mail.zope.org/mailman/listinfo/zope3-users > > -- > ** Email Scanned by Elive's Virus Scanning Service - > http://www.elive.net ** > > > > > _______________________________________________ Zope3-users mailing list Zope3-users@zope.org http://mail.zope.org/mailman/listinfo/zope3-users