簡體   English   中英

在多個字段上使用表單小部件驗證器

[英]Using a Form Widget Validator on multiple fields

我已經為我的架構字段編寫了一個自定義驗證器,如此處的文檔所示: http : //docs.plone.org/develop/plone/forms/z3c.form.html#form-widget-validators

在此處輸入圖片說明

我的問題是,如果我想對幾個不同的字段使用相同的驗證器,這可能嗎? 它似乎不起作用。 例如我想寫:

# Set conditions for which fields the validator class applies
validator.WidgetValidatorDiscriminators(PhoneNumberValidator, field=IZohoContactForm['phone_number'])
validator.WidgetValidatorDiscriminators(PhoneNumberValidator, field=IZohoContactForm['another_phone_field'])

作為一種解決方法,我編寫了兩個具有不同名稱的相同驗證器,這違反了 DRY 原則,但我對此似乎無能為力……

也可以為field參數傳遞字段類型(請參閱: https : //docs.plone.org/develop/addons/schema-driven-forms/customising-form-b​​ehaviour/validation.html#field-widget -validators ): validator.WidgetValidatorDiscriminators(MyListValidator, field=schema.List)

在上面的示例中,驗證器應用於schema.List類型的所有字段

這是一個老問題,但我最近才遇到這個問題,這是我的方法:

  1. 為要驗證的字段設置架構接口。
class ICaptchaSchema(model.Schema):
    captcha = schema.TextLine(
            title=_('security_check', default="Security check"),
        )
  1. 使用表單架構界面中的字段:
class IFormSchema(model.Schema):
    captcha1 = ICaptchaSchema['captcha']
    captcha2 = ICaptchaSchema['captcha']

  1. 為第一個架構接口注冊表單小部件驗證器:
validator.WidgetValidatorDiscriminators(YourCustomValidator,
                                        field=ICaptchaSchema['captcha'])

所有字段“驗證碼”都將進行調整。

問候。

暫無
暫無

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

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