[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