/** * 验证数据完整性 Validate * @access public * @param array $data 将要验证的数组 * @param array $validate_rules 验证规则数组 * @param bool $validate_all 是否同时验证所有规则 * @param XF_Db_Table_Abstract $db_table 主要支持unique的验证,默认为null * @param bool $is_insert 是否为添加数据操作?如果不是,则不强制执行required * @return mixed 一般返回验证后的数据[数组] */ public function validateData(&$data, $validate_rules, $validate_all = false, XF_Db_Table_Abstract $db_table = NULL, $is_insert = TRUE) { if (!empty($validate_rules)) { //检测是否为有效的Validate if (!isset($validate_rules['rules'])) { return false; } //获取验证规则 $rules = $validate_rules['rules']; //获取错误消息 $message = $validate_rules['messages']; $vali_keys = array_keys($rules); $tmp_array = array(); //依次对规则进行分析 foreach ($rules as $key => $val) { //如果当规则字段存在 if (isset($data[$key]) || $validate_all == true) { //将规则转换为数组 $tmp_array = explode(',', $val); foreach ($tmp_array as $index => $vals) { //获取规则名称及值 $tep = explode(':', $vals); $status = $this->_switchValidateFormData($data, $key, strtolower($tep[0]), $tep[1], $message, $db_table, $is_insert); if ($status === false) { //是否有设置默认值? if ($defaultKey = XF_Functions::searchValueFromArray($tmp_array, 'default:')) { $defaultArray = explode(':', $tmp_array[$defaultKey]); if (isset($defaultArray[1]) && $defaultArray[0] == 'default') { $data[$key] = $defaultArray[1]; XF_DataPool::getInstance()->replace('TableFieldDataValidateError', NULL); return $data; } } return false; } } } } } return $data; }