2

我们有以下敏捷模式:

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 Widget 呈现,而不是使用我们架构中指定的复选框。

为什么?

4

1 回答 1

4

中的小部件plone.app.form用于zope.formlib表单。灵巧使用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)
         )
于 2012-11-08T09:56:50.517 回答