验证场景
验证器支持定义场景,便于验证不同场景下的数据。
属性定义
通常使用如下方式:
namespace app\index\validate;
use ginkgo\Validate;
class User extends Validate {
protected $rule = array(
'user_name' => array(
'length' => '1,30',
'format' => 'alpha_dash',
),
'user_mail' => array(
'max' => 300,
'format' => 'email',
),
'user_ids' => array(
'require' => true,
),
'act' => array(
'require' => true,
),
);
protected $scene = array(
'submit' => array(
'user_name',
'user_mail',
),
'status' => array(
'user_ids',
'act',
),
'delete' => array(
'user_ids',
),
);
}
方法定义
使用 setScene
方法定义场景,如
class User extends Validate {
protected $rule = array(
'user_name' => array(
'length' => '1,30',
'format' => 'alpha_dash',
),
'user_mail' => array(
'max' => 300,
'format' => 'email',
),
'user_ids' => array(
'require' => true,
),
'act' => array(
'require' => true,
),
);
function __construct() { //构造函数
$scene = array(
'submit' => array(
'user_name',
'user_mail',
),
'status' => array(
'user_ids',
'act',
),
'delete' => array(
'user_ids',
),
);
$this->setScene($scene);
}
}
setScene
方法说明
function setScene( $scene [, $value = array()] )
参数
scene
场景支持两种类型
字符串:场景名
数组:批量设置场景
value
场景值当
scene
为字符串时为必须,当scene
为数组时自动忽略。
场景调用方法
在需要进行验证的地方调用 scene
方法
$data = array(
'user_name' => 'ginkgo',
'user_mail' => 121,
);
$validate = Loader::validate('User');
$result = $validate->scene('submit')->verify($data);
if(!$result){
print_r($validate->getMessage());
}
验证场景还可配合多个方法使用,说明如下:
方法名 | 描述 |
---|---|
scene | 使用场景 |
only | 需要验证的字段 |
remove | 移除验证规则 |
append | 追加验证规则 |
注意:所有方法均支持链式操作,优先级为 only > remove > append