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 的验证器验证城市属性,因此它只能接受两个值−伦敦和巴黎。
一个独立的验证器继承自 yii\validators\Validator 类。为了实现验证逻辑,你需要覆盖 yii\validators\Validator::validateAttribute() 方法。
步骤1 - 为了使用独立验证器实现前面的例子,将一个 CityValidator.php 文件添加到 components 文件夹中。
步骤2 − 然后,按以下方式修改 RegistrationForm 模型。