Laravel8 快速入门教程十二 - 数据验证

139 阅读2分钟

本文由 简悦 SimpRead 转码, 原文地址 juejin.cn

「这是我参与 11 月更文挑战的第 6 天,活动详情查看:2021 最后一次更文挑战

背景

  1. 项目用 Thinkphp5.1 开发完成,对于各种关系模型的查询 Tp 处理起来还是比较吃力的。
  2. 作为努力奔跑的程序员,下一个项目我们决定用 Lavarel 进行开发。
  3. 因为掘金粑粑有奖励,所以把部分 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);
    }
复制代码

代码思考

上面的逻辑是在接收数据的时候对数据进行验证。存在着一些问题

  1. 代码太多,试想一下,这才是简单的几个字段,罗列的数据就这么的多。如果是有十几个字段的数据表,那验证相关的代码会相当的庞大,会在每一个方法中占用非常大的篇幅。而且每一处都这么编写。会导致代码维护成本非常高。一处小修改就得排着改很多的地方。
  2. 不需要的字段被传递了进来。假如我的操作就需要两个字段的数据。但是,如果接口传递了别的参数,也能通过了验证器【因为验证器中没定义规则】。导致数据库数据被更改了。
  3. --more-- 等等... 【总结】:我们需要对验证跟取参的操作进行提取,单独的放到一层进行处理。