我坚持使用两种模式来构建具有内联验证的 z3c.GroupForm:
按照https://pypi.python.org/pypi/z3c.form#group-forms我做了:
from plone.directives.dexterity import AddForm
from z3c.form import field
from z3c.form import group, form
class CustomerGroup( group.Group ):
label = u'Customer'
fields = field.Fields(ICustomer, prefix='customer')
class CustomerRegistrationAddForm(group.GroupForm, AddForm):
ignoreContext = True
fields = field.Fields(IEmailUser).omit('customer')
groups = (CustomerGroup,)
这行得通。但它给了我非常简单的渲染并且没有内联验证。我试图包含来自 plone.autoform 的混合,但这些似乎不兼容 -> MRO 错误。
我很确定我错过了什么。在 Plone 中有 plone.app.z3cform 和其他用于 z3c.form 使用的包装器。但是我没有找到将它们用于 z3c.groups 的示例,因此我尝试了基本的 z3c 变体。
我喜欢实现的用例如下: 一个表单,其中分别在一个选项卡中具有 Schema A 和 Schema B 的字段。然后,表单动作处理是手动编码的,并将负责处理底层内容类型。换句话说:不会/不应该使用灵巧的“积极内涵”魔法。
但我喜欢根据我为模式注册的模式提示和适配器进行内联验证。