zoukankan      html  css  js  c++  java
  • laravel笔记7 产品管理模块

    ------------恢复内容开始------------

    创建模型并迁移文件

    命令:php artisan make:model Product -m

    生成迁移:php artisan migrate

    ------------恢复内容结束------------

    其他内容和news的差不多,具体就不多写,主要写写重要的几个验证规则

    1、当添加产品时,如果没有选择分类是不能添加的, request验证  php artisan make:request StoreProductPost

    public function rules()
    {
    return [
    //cid就是产品分类字段
    'cid' => 'required|integer',
    'title' =>'required',
    'remark'=>'required',
    'file'=>'image',
    'content'=>'required',
    ];
    }
    public function messages()
    {
    return [
    //自定义提示信息
    'cid.required'=>'请先添加分类'
    ];
    }

    2、自定义验证规则 php artisan make:rule CheckCidChilds
    解决添加产品选择分类时,如果这个分类下面还有子分类,那么不能直接添加产品,需要选择相应的子分类才能添加产品

    首先在验证规则StoreProductPost里面调用自定义的验证规则ChecCidChilds
    public function rules()
    {
    return [
    //这里cid使用官方文档列表注入引用自定义规则CheckCidChils
    'cid' =>['required','integer',new CheckCidChilds] ,
    'title' =>'required',
    'remark'=>'required',
    'file'=>'image',
    'content'=>'required',
    ];
    }
    然后获取分类模型Category.php里面的getChildsIds方法,获取一个指定分类下面的所有子分
    //获取指定分类的所有子分类
    public static function getChildsIds($id){
    //定义一个数组,包含自身
    $ids[] = $id;
    //获取所有重组数据 赋值到$data
    $data = self::all();
    // 获取重组的数据 $data是原始数据 $id是上面的$pid
    $childs = self::makecates($data,$id);
    foreach ($childs as $item){
    $ids[] = $item->id;
    }
    return $ids;
    }

    最后在自定义规则里CheckCidChilds里面引用这个方法
    public function passes($attribute, $value)
    {

    $flag = Category::getChildsIds($value);
    // dd($value); 这个$value是上面function passes()里面的$value 返回的是指定分类的id
    // dd($flag); 这个是调用了分类模型Category里面的getChildsIDs方法,返回的是一个分类数组
    if($flag ===[$value]){
    return true;
    }else{
    return false;
    }
    }

    /**
    * Get the validation error message.
    *
    * @return string
    */
    public function message()
    {
    return '不能在该分类下添加产品';
    }
    }

    使用其他类的方法时,注意在文件开头引入其他文件use··············
     
  • 相关阅读:
    csrf攻击 xss区别
    同源策略
    JavaScript中数组的排序——sort()
    箭头函数
    bind(),call(),apply()
    异步操作
    slice(), splice(),split(),indexOf(),join(),replace()
    04-Linux系统编程-第01天(文件IO、阻塞非阻塞)
    03-Linux命令基础-第03天(makefile、静态库、动态库、gdb调试工具)
    02-Linux命令基础-第02天(压缩包管理、服务器搭建与使用、vim)
  • 原文地址:https://www.cnblogs.com/fightforcoder/p/13470806.html
Copyright © 2011-2022 走看看