/**
* 自动表单验证
* @access protected
* @param array $data 创建数据
* @param string $type 创建类型
* @return boolean
*/
public function valid($data, $rule = [])
{
$validate = $rule ? $rule : $this->validate;
// 属性验证
if ($validate) {
// 如果设置了数据自动验证则进行数据验证
if ($this->patchValidate) {
// 重置验证错误信息
$this->error = [];
}
foreach ($validate as $key => $val) {
// 验证因子定义格式
// array(field,rule,message,condition,type,params)
// 判断是否需要执行验证
if (0 == strpos($val[2], '{%') && strpos($val[2], '}')) {
$val[2] = Lang::get(substr($val[2], 2, -1));
}
$val[3] = isset($val[3]) ? $val[3] : 0;
$val[4] = isset($val[4]) ? $val[4] : 'regex';
// 判断验证条件
if (1 == $val[3] || 2 == $val[3] && '' != trim($data[$val[0]]) || 0 == $val[3] && isset($data[$val[0]])) {
if (false === $this->_validationField($data, $val)) {
return false;
}
}
}
// 批量验证的时候最后返回错误
if (!empty($this->error)) {
return false;
}
}
return true;
}