我已为我的架构字段编写了自定义验证程序,如下面的文档中所示: 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'])
答案 0 :(得分:0)
作为一种解决方法,我编写了两个具有不同名称的相同验证器,这些验证器违反了DRY原则,但对于这个原则我似乎并不多......
答案 1 :(得分:0)
也可以为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
的所有字段
答案 2 :(得分:0)
这是一个老问题,但是我最近才遇到这个问题,这是我的方法:
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'])
将修改所有“验证码”字段。
问候。