本文由 简悦 SimpRead 转码, 原文地址 juejin.cn
「这是我参与 11 月更文挑战的第 6 天,活动详情查看:2021 最后一次更文挑战」
背景
- 项目用 Thinkphp5.1 开发完成,对于各种关系模型的查询 Tp 处理起来还是比较吃力的。
- 作为努力奔跑的程序员,下一个项目我们决定用 Lavarel 进行开发。
- 因为掘金粑粑有奖励,所以把部分 gitee 上的私有的部分学习笔记整理一下。
说明
Laravel 属于中大型框架,各种功能都被内置了,而且 Laravel 官方的文档看的我是云里雾里的,对于新手感觉不是很友好。所以此系列文章只适合有 PHP 基础。想快速入门搞开发的。
正文
上一篇文章我们保存完成数据。这里我们对数据进行校验。
/**
* 保存数据
*/
public function store(Request $request){
$blogService = new BlogService();
$param = $request->all(); //接收数据
//验证规则
$rules = [
'title'=>'required|string',
'content'=>'required|string',
'author_id'=>'required|integer',
'category_id'=>'required|integer',
'remarks'=>'string'
];
//验证的提示信息
$message = [
'title.required'=>'标题必须填写',
'title.string'=>'标题中含有非法文字',
'content.required'=>'内容必须填写',
'content.string'=>'内容中含有非法文字',
'author_id.required'=>'作者必须选择',
'author_id.integer'=>'作者编号不正确',
'category_id.required'=>'类别必须选择',
'category_id.integer'=>'类别编号不正确'
];
//验证并返回错误信息
$validate = Validator::make($param, $rules, $message);
if($validate->errors()->first()){
return $this->fail($validate->errors()->first());
}
$res = $blogService->add($param);
return $this->success($res);
}
复制代码
代码思考
上面的逻辑是在接收数据的时候对数据进行验证。存在着一些问题
- 代码太多,试想一下,这才是简单的几个字段,罗列的数据就这么的多。如果是有十几个字段的数据表,那验证相关的代码会相当的庞大,会在每一个方法中占用非常大的篇幅。而且每一处都这么编写。会导致代码维护成本非常高。一处小修改就得排着改很多的地方。
- 不需要的字段被传递了进来。假如我的操作就需要两个字段的数据。但是,如果接口传递了别的参数,也能通过了验证器【因为验证器中没定义规则】。导致数据库数据被更改了。
- --more-- 等等... 【总结】:我们需要对验证跟取参的操作进行提取,单独的放到一层进行处理。