代码:
新增的时候有好好的验证,但是编辑的时候没有验证任何信息。
public function save_one($data,$map=FALSE){
$res = $map ? $this->validate('StoreProduct.edit')->allowField(true)->save($data,$map) : $this->validate(true)->allowField(true)->save($data);
return $res;
}
验证器:
class StoreProduct extends Validate{
protected $rule = [
"store_id|店铺ID"=>"require|number|max:11",
"name|店铺名"=>"require|max:255",
"ico|图标"=>"require|max:255",
"cover|轮播图"=>"require",
"cate_id|分类"=>"require|number|between:1,2",
"price|原价"=>"require",
"price|原价"=>['regex'=>'/((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/'],
"discount|优惠金额"=>"require",
"discount|优惠金额"=>['regex'=>'/((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/'],
"special_price|特价"=>"require",
"special_price|特价"=>['regex'=>'/((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/'],
"description|商品描述"=>"require|max:255",
"sort|排序"=>"require|number|max:11",
"is_show|上下架"=>"number|between:0,1",
"is_del|删除状态"=>"number|between:0,1",
];
protected $scene = [
'edit'=>[
"name|店铺名"=>"max:255",
"ico|图标"=>"max:255",
"cate_id|分类"=>"number|between:1,2",
"price|原价"=>['regex'=>'/(^[1-9]{1}[0-9]*$)|(^[0-9]*\.[0-9]{2}$)/'],
"discount|优惠金额"=>['regex'=>'/((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/'],
"special_price|特价"=>['regex'=>'/((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/'],
"description|商品描述"=>"max:255",
"sort|排序"=>"number|max:11",
"is_show|上下架"=>"between:0,1",
"is_del|删除状态"=>"number|between:0,1",
]
];
}
也不报错,但是也不验证任何字段。
网上找不到答案。最后试了半天 发现验证场景里不能填字段的名字,去掉之后就好了。
protected $scene = [
'edit'=>[
"name"=>"max:255",
"ico"=>"max:255",
"cate_id"=>"number|between:1,2",
"price"=>['regex'=>'/(^[1-9]{1}[0-9]*$)|(^[0-9]*\.[0-9]{2}$)/'],
"discount"=>['regex'=>'/((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/'],
"special_price"=>['regex'=>'/((^[1-9]\d*)|^0)(\.\d{0,2}){0,1}$/'],
"description"=>"max:255",
"sort"=>"number|max:11",
"is_show"=>"between:0,1",
"is_del"=>"number|between:0,1",
]
];
应该是验证规则里 name|店铺名 已经给字段命名过了
下面的验证场景里把name|店铺名当成是一个字段名了。