我们有以下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小部件而不是使用复选框来渲染字段 在我们的架构中指定。
为什么?
答案 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)
)