[Zope3-Users] Trying to use browser:form -> 404

Helmut Merz helmutm at cy55.de
Sat Feb 11 10:51:25 EST 2006


Am Samstag, 11. Februar 2006 14:11 schrieb Florian Lindner:

> > > blablubb is a field of my interface.
> >
> > Of which interface? IRegistrationForm only or also
> > ICentershock? (and no typos? ;-))
>
> of IRegistrationForm and not of ICentershock

I see...   Seems to be OK for what you're wanting to do.

> Note that I don't want to edit an ICentershock object, I don't
> want to edit any kind of object. I just want to create a form
> based on a schema. The schema has no use but to provide the
> fields information for the form. The processing of the data
> entered is done manually in python code.
>
> registrationForm.html is not a view on a Centershock object.
> It should be a form in which the user can enter data that is
> being processed by the view class and ultimately create an
> user in a PAU utility. The ICentershock objects should server
> as a kind of root object of my application, the object that
> provided all the pages that can't be assigned to an instance
> of an object (like contact information or the powered by Zope
> page).

OK, but for EditForm you need an object the fields of the form 
can be bound to. If that's not a content object it could just be 
an adapter.

Another and probably better way in this case would be not to 
derive from EditForm but from Form.

I just have to solve a similar problem and got it working the 
following way (IPersonRegistration is the schema for the form, 
INode is the interface of something like your Centershock 
object):

browser/configure.zcml:

  <browser:page 
      name="registration.html"
      for="..interfaces.INode"
      class=".registration.PersonRegistrationView"
      permission="zope.Public" />


browser/registration.py:

from zope.formlib.form import Form, FormFields, action
from zope.formlib.i18n import _

class PersonRegistrationView(EditForm):

    form_fields = FormFields(IPersonRegistration)

    @action(_("Apply"))
    def handle_edit_action(self, action, data):
        print data # here we'll do the real stuff...

        
As often with Zope 3: simple but not easy (to find out) ;-)

Helmut


More information about the Zope3-users mailing list