[Zope3-dev] problems with <browser:widget>

Dominik Huber dominik.huber at perse.ch
Wed Aug 24 10:01:07 EDT 2005


Adam Groszer wrote:

>I'm having problems with using <browser:widget>.
>
>I have an interface:
>class ISzerep(Interface):
>    name = TextLine(
>        title=u"Szerep nev",
>        description=u"Szerep nev",
>        required=True
>        )
>    szemelyek = List(
>        title=u"Hozzarendelt szemelyek",
>        description=u"Hozzarendelt szemelyek",
>        required=False,
>        value_type=Choice(vocabulary="szemely")
>        )
>
>If I add a simple add (or edit) form:
>  <browser:addform
>      schema="szscreen.interfaces.ISzemely"
>      content_factory="szscreen.app.Szemely"
>      label="Uj Szemely"
>      name="AddSzemely.html"
>      permission="zope.ManageContent"
>      set_before_add="name"
>      >
>  </browser:addform>
>everything goes well, an OrderedMultiSelectWidget is displayed in the
>browser by default for the *szemelyek* field.
>
>If I modify the addform configuration by adding the <widget>:
>  <browser:addform
>      schema="szscreen.interfaces.ISzemely"
>      content_factory="szscreen.app.Szemely"
>      label="Uj Szemely"
>      name="AddSzemely.html"
>      permission="zope.ManageContent"
>      set_before_add="name"
>      >
>      <widget field="szerepek" class="zope.app.form.browser.OrderedMultiSelectWidget"/>
>  </browser:addform>
>  
>
You cannot register the widget class directly, but you have to provide a 
specific widget factory.
Example edit.py within your browser directory:

from zope.app.form import CustomWidgetFactory
from zope.app.form.browser import OrderedMultiSelectWidget

szerepek_widget_factory = CustomWidgetFactory(OrderedMultiSelectWidget)


Example registration within the configure.zcml:

  <browser:addform
      schema="szscreen.interfaces.ISzemely"
      content_factory="szscreen.app.Szemely"
      label="Uj Szemely"
      name="AddSzemely.html"
      permission="zope.ManageContent"
      set_before_add="name"
      >
      <widget field="szerepek" class=".edit.szerepek_widget_factory"/>
  </browser:addform>

Regards,
Dominik





More information about the Zope3-dev mailing list