MultiCheckBoxWidget呈现为In-Out-Widget

时间:2012-11-08 08:24:41

标签: plone dexterity z3c.form

我们有以下Dexterity架构:

from plone.app.form.widgets import MultiCheckBoxWidget

visibilityVocabulary = SimpleVocabulary(
[
    SimpleTerm(u'OSP', title=u'OSP'),
    SimpleTerm(u'BIZ', title=u'BIZ'),
]

class ISomeSchema(Interface):
     # ...
     form.widget(visibility=MultiCheckBoxWidget)
     visibility = schema.Set(title=Visibility',
                             value_type=schema.Choice(vocabulary=visibilityVocabulary)
                             )

使用In-And-Out小部件而不是使用复选框来渲染字段 在我们的架构中指定。

为什么?

1 个答案:

答案 0 :(得分:4)

plone.app.form中的小部件适用于zope.formlib表单。 Dexterity使用z3c.form表单库。

请尝试使用z3c.form.browser.checkbox.CheckBoxFieldWidget。像这样:

from zope import schema
from zope.schema.vocabulary import SimpleVocabulary
from zope.schema.vocabulary import SimpleTerm

from plone.directives import form

from z3c.form.browser.checkbox import CheckBoxFieldWidget

visibilityVocabulary = SimpleVocabulary(
[
    SimpleTerm(u'OSP', title=u'OSP'),
    SimpleTerm(u'BIZ', title=u'BIZ'),
])

class ISomeSchema(form.Schema):

     form.widget(visibility=CheckBoxFieldWidget)
     visibility = schema.Set(
             title=u'Visibility',
             value_type=schema.Choice(vocabulary=visibilityVocabulary)
         )