TP5 验证器 验证场景无效

代码:
新增的时候有好好的验证,但是编辑的时候没有验证任何信息。

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|店铺名当成是一个字段名了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值