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··············