- 普通 - 未处理
[i=s] 本帖最后由 417610285 于 2010-10-7 11:09 编辑 [/i]ThinkPHP/Lib/Think/Core/Model.class.php _validationField方法里面
case 'unique': // 验证某个值是否唯一
if(is_string($val[0]) && strpos($val[0],','))
$val[0] = explode(',',$val[0]);
$map = array();
if(is_array($val[0])) {
// 支持多个字段验证
foreach ($val[0] as $field)
$map[$field] = $data[$field];
}else{
//$map[$val[0]] = $data[$val[0]]; //以前
if(isset($this->_map[$val[0]])){
$map[$this->_map[$val[0]]] = $data[$val[0]];
}else
{
$map[$val[0]] = $data[$val[0]];
}
}
if($this->where($map)->find())
return false;
break;
//使用Model验证时_map[Form_name] = >DB_TABLE_NAME
//BUG在于。where里面的条件是的filed_name 为表单名,在where还有没有映射
还有一个地方不明白
也在model.php create
// 数据自动验证
if(!$this->autoValidation($data,$type)) return false;
// 检查字段映射
if(!empty($this->_map)) {
foreach ($this->_map as $key=>$val){
if(isset($data[$key])) {
$data[$val] = $data[$key];
unset($data[$key]);
}
}
}
应该是先映射再验证,
小弟不才,只能到这里了
