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
_______________________________________________
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com