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··············
     
  • 相关阅读:
    Web调用Linux客户端remmina运维
    前端和后端连载一起启动
    react redux 二次开发流程
    快上车,react 入门拾遗
    吐血整理!这篇带你彻底理解主存中存储单元地址的分配
    大学四年走来,这些网络工程师必备的模拟器我都给你整理好了
    主存、辅存、内存、外存、存储器是什么?还傻傻分不清楚?看完这一篇就够了
    一分钟理解系列—半导体存储芯片的知识点总结
    小白入门NAS—快速搭建私有云教程系列(一)
    五分钟理解主存储器的基本组成结构
  • 原文地址:https://www.cnblogs.com/fightforcoder/p/13470806.html
Copyright © 2011-2022 走看看