请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

验证场景问题

/application/admin/validate/Category.php 代码

<?php
namespace app\admin\validate;
use think\Validate;
class Category extends Validate{
    protected $rule = [
         ['name','require|max:10','分类不能为空!|分类名不能超过10!'],
         ['parent_id','number'],
         ['id','number'],
         ['status','number|in:-1,0,1','状态必须为数字|状态范围不合法!'],
         ['listorder','number'],
    ];
    /*验证场景设置*/
    protected $sence = [
        'add' => ['name','parent_id','id'],
        'listorder' => ['id', 'listorder'],
        'status' => ['id', 'status'],
    ];
}
?>

/application/admin/controller/Category.php 代码

<?php
namespace app\admin\controller;
use think\Controller;
class Category extends Controller
{
    private $obj;
    public function _initialize(){
        $this->obj = model('Category');
    }
    public function index()
    {
        $parentId = input('get.parent_id',0,'intval');
        $categorys = $this->obj->getFirstCategory($parentId);
        $this->assign('categorys', $categorys);
        return $this->fetch();
    }
    public function add()
    {
        $categorys = $this->obj->getNormalFirstCategory();
        return $this->fetch('',['categorys' => $categorys]);
    }
    public function save()
    {
        if(!request()->isPost()){
            $this->error('请求失败');
        }
        $data = input('post.');
        $validate = validate('Category');
        if(!$validate->scene('add')->check($data)){
            $this->error($validate->getError());
        }
        if(!empty($data['id'])){
            return $this->update($data);
        }
        //把$data数据提交给model层
        $res = $this->obj->add($data);
        if($res){
            $this->success('新增成功!');
        }else{
            $this->error('新增失败!');
        }
    }
    public function edit($id = 0){
        if(intval($id)<1){
            $this->error('参数不合法');
        }
        $category = $this->obj->get($id);
        $categorys = $this->obj->getNormalFirstCategory();
        $this->assign('category', $category);
        $this->assign('categorys', $categorys);
        return $this->fetch();
    }

    public function update($data){
        $res = $this->obj->save($data,['id' => intval($data['id'])]);
        if($res){
            $this->success('更新成功');
        }else{
            $this->error('更新失败');
        }
    }
    public function listorder($id,$listorder){
        $res = $this->obj->save(['listorder'=>$listorder],['id'=>$id]);
        if($res){
            $this->result($_SERVER['HTTP_REFERER'],1,'更新成功');
        }else{
            $this->result($_SERVER['HTTP_REFERER'],0,'更新成功');
        }
    }
    public function status(){
        $data = input('get.');
        $validate = Validate('Category');
        $validate->scene('status')->check($data);
        if(!$validate->scene('status')->check($data)){
            $this->error($validate->getError());
        }
        $res = $this->obj->save(['status'=>$data['status']],['id'=>$data['id']]);
        if($res){
            $this->success('更新成功');
        }else{
            $this->error('更新失败');
        }

    }
}
?>

删除和修改状态时总是提醒:分类不能为空!
图片描述

正在回答

1回答

亲爱的同学您好。遇到这种问题 ,老师教您下排查问题的思路

1、 您应该在 删除和修改状态的控制器入口 打印 传递的这个分类出来看看 输出什么内容?

0 回复 有任何疑惑可以回复我~
  • 提问者 誓言玄夏 #1
    好,晚上我回家试试看
    回复 有任何疑惑可以回复我~ 2019-03-26 13:05:28
  • singwa 回复 提问者 誓言玄夏 #2
    好的。。
    回复 有任何疑惑可以回复我~ 2019-03-26 13:53:57
  • 提问者 誓言玄夏 回复 singwa #3
    点击审核按钮:Array ( [id] => 6 [status] => 0 ) 
    点击删除按钮:Array ( [id] => 6 [status] => -1 ) 
    我感觉是这个代码没生效:
    $validate = validate('Category');
    $validate->scene('status')->check($data);
    
    删除以下代码就可以正常更新状态了,
            $validate = validate('Category');
            $validate->scene('status')->check($data);
            if(!$validate->scene('status')->check($data)){
                $this->error($validate->getError());
            }
    所以我判断是验证场景 配置出问题了,请老师指导指正
    回复 有任何疑惑可以回复我~ 2019-03-26 20:09:20
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信