在多个字段上使用表单小部件验证器
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
参数传递字段 type
(参见:https://docs.plone.org/develop/addons/schema-driven-forms/customising-form-behaviour/validation.html#field-widget-validators):validator.WidgetValidatorDiscriminators(MyListValidator, field=schema.List)
在上面的示例中,验证器应用于类型为 schema.List
的所有字段
这是一个老问题,但我最近才遇到这个问题,这是我的方法:
- 为要验证的字段设置架构接口。
class ICaptchaSchema(model.Schema):
captcha = schema.TextLine(
title=_('security_check', default="Security check"),
)
- 使用表单模式接口中的字段:
class IFormSchema(model.Schema):
captcha1 = ICaptchaSchema['captcha']
captcha2 = ICaptchaSchema['captcha']
- 为第一个模式接口注册表单小部件验证器:
validator.WidgetValidatorDiscriminators(YourCustomValidator,
field=ICaptchaSchema['captcha'])
将调整所有字段“验证码”。
此致。
我已经为我的架构字段编写了一个自定义验证器,如此处的文档所示: 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
参数传递字段 type
(参见:https://docs.plone.org/develop/addons/schema-driven-forms/customising-form-behaviour/validation.html#field-widget-validators):validator.WidgetValidatorDiscriminators(MyListValidator, field=schema.List)
在上面的示例中,验证器应用于类型为 schema.List
这是一个老问题,但我最近才遇到这个问题,这是我的方法:
- 为要验证的字段设置架构接口。
class ICaptchaSchema(model.Schema):
captcha = schema.TextLine(
title=_('security_check', default="Security check"),
)
- 使用表单模式接口中的字段:
class IFormSchema(model.Schema):
captcha1 = ICaptchaSchema['captcha']
captcha2 = ICaptchaSchema['captcha']
- 为第一个模式接口注册表单小部件验证器:
validator.WidgetValidatorDiscriminators(YourCustomValidator,
field=ICaptchaSchema['captcha'])
将调整所有字段“验证码”。
此致。