Yii - 特殊验证
-
简述
有时您需要验证未绑定到任何模型的值。您可以使用yii\base\DynamicModel类,它支持动态定义属性和规则。第 1 步- 将actionAdHocValidation方法添加到SiteController。在上面的代码中,我们定义了一个带有用户名和电子邮件属性的“动态”模型并对其进行验证。第 2 步- 在 Web 浏览器的地址栏中键入http://localhost:8080/index.php?r=site/ad-hoc-validation,您将看到一条错误消息,因为我们的电子邮件长度为 14 个字符。 -
自定义验证器
有两种类型的自定义验证器 -- 内联验证器
- 独立验证器
内联验证器由模型方法或匿名函数定义。如果一个属性验证失败,你应该调用yii\base\Model::addError()方法来保存错误信息。下面的RegistrationForm示例验证了 city 属性,因此它只能接受两个值——London 和 Paris。一个独立的验证器扩展了yii\validators\Validator类。要实现验证逻辑,你应该重写yii\validators\Validator::validateAttribute()方法。第 1 步- 要使用独立验证器实现前面的示例,请将CityValidator.php文件添加到组件文件夹。第 2 步 - 然后,以这种方式修改RegistrationForm模型。