2

我已经为我的模式字段编写了一个自定义验证器,如下面的文档所示: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'])
4

3 回答 3

1

作为一种解决方法,我编写了两个具有不同名称的相同验证器,这违反了 DRY 原则,但我对此似乎无能为力...

于 2015-09-03T01:11:45.637 回答
0

也可以为参数传递字段类型field(参见:https ://docs.plone.org/develop/addons/schema-driven-forms/customising-form-b​​ehaviour/validation.html#field-widget-验证器):validator.WidgetValidatorDiscriminators(MyListValidator, field=schema.List)

在上面的示例中,验证器应用于所有类型的字段schema.List

于 2019-08-01T13:17:16.713 回答
0

这是一个老问题,但我最近才遇到这个问题,这是我的方法:

  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. 为第一个模式 iterface 注册表单小部件验证器:
validator.WidgetValidatorDiscriminators(YourCustomValidator,
                                        field=ICaptchaSchema['captcha'])

所有字段“验证码”都将被调整。

问候。

于 2020-09-29T14:18:19.883 回答