簡體   English   中英

具有內聯驗證的Plone z3c.form.GroupForm

[英]Plone z3c.form.GroupForm with inline validation

我使用兩個模式來構建一個具有內聯驗證的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.app.z3cform和Plone中z3c.form用法的其他包裝器。 但我沒有找到將它們用於z3c.groups的示例,因此我嘗試了基本的z3c變體。

我想要實現的用例如下:分別在選項卡中包含Schema A和Schema B字段的表單。 然后,表單操作處理被手動編碼,並將處理底層內容類型。 換句話說:不會使用靈巧的“正面內涵”魔法。

但我喜歡根據我為模式注冊的模式提示和適配器進行內聯驗證。

問題解決了。 現在,Z3c組在Plone中稱為場集。 以下是訣竅。

from plone.autoform.form import AutoExtensibleForm
from plone.supermodel import model
from z3c.form import form
from plone.autoform import directives

class ICustomerRegistration( IEmailUser, ICustomer ):
    model.fieldset('EmailUser',
        label=_(u"EMail User"),
        fields=['email', 'firstname', 'lastname', ]
        )

    model.fieldset('Customer',
        label=_(u"Customer"),
        fields=['enterprise',
                'street',
                'house_number',
                'postal_code',
                'city',
                ]
        )

class CustomerRegistrationAddForm(AutoExtensibleForm, form.Form):
    ignoreContext = True
    schema = ICustomerRegistration

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM