新建一个文件:
<?php
/**
* author : forecho <caizhenghai@gmail.com>
* createTime : 2015/7/1 14:54
* description:
*/
namespace common\helps;
use yii\validators\Validator;
class ArrayValidator extends Validator
{
public function validateAttribute($model, $attribute)
{
if (!is_array($model->$attribute)) {
$this->addError($model, $attribute, $attribute . '必须是一个数组');
}
}
}
使用的时候:
public function rules()
{
return [
...
['kind_ids', 'common\helps\ArrayValidator'], // 自定义验证
...
];
}
参考:http://stackoverflow.com/questions/28313696/yii2-class-validator-does-not-exist
如果这篇文章对您有帮助,不妨微信小额赞助我一下,让我有动力继续写出高质量的教程。
model 内函数验证,参考代码:
use yii\base\Model;
class MyForm extends Model
{
public $country;
public $token;
public function rules()
{
return [
// an inline validator defined as the model method validateCountry()
['country', 'validateCountry'],
// an inline validator defined as an anonymous function
['token', function ($attribute, $params, $validator) {
if (!ctype_alnum($this->$attribute)) {
$this->addError($attribute, 'The token must contain letters or digits.');
}
}],
];
}
public function validateCountry($attribute, $params, $validator)
{
if (!in_array($this->$attribute, ['USA', 'Indonesia'])) {
$this->addError($attribute, 'The country must be either "USA" or "Indonesia".');
}
}
}
来源:https://www.yiiframework.com/doc/guide/2.0/en/input-validation#creating-validators