[Zope3-Users] z3c:layout - not working with z3c.form.EditForm

kevin gill kevin at movieextras.ie
Tue Jan 29 09:33:04 EST 2008


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 at zope.org
> http://mail.zope.org/mailman/listinfo/zope3-users
>
> --
> ** Email Scanned by Elive's Virus Scanning Service -
> http://www.elive.net **
>
>
>
>
>




More information about the Zope3-users mailing list