laravel没有场景验证的概念,是一个验证类验证一个函数,验证数据不是很方便,封装补足一下

封装添加场景的方法

<?phpnamespace App\Http\Requests;use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Str;
use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Contracts\Validation\Validator;/*** 使用方法:* Class AbstractRequest* @package App\Http\Requests*/
class BaseRequest extends FormRequest
{public $scenes = [];public $currentScene;               //当前场景public $autoValidate = false;       //是否注入之后自动验证public function authorize(){return true;}/*** 设置场景* @param $scene* @return $this*/public function scene($scene){$this->currentScene = $scene;return $this;}/*** 覆盖自动验证方法*/public function validateResolved(){if ($this->autoValidate) {$this->handleValidate();}}/*** 验证方法* @param string $scene* @throws \Illuminate\Auth\Access\AuthorizationException* @throws \Illuminate\Validation\ValidationException*/public function validate($scene = ''){if ($scene) {$this->currentScene = $scene;}$this->handleValidate();}/*** 根据场景获取规则* @return array|mixed*/public function getRules(){$rules = $this->container->call([$this, 'rules']);$newRules = [];if ($this->currentScene && isset($this->scenes[$this->currentScene])) {$sceneFields = is_array($this->scenes[$this->currentScene])? $this->scenes[$this->currentScene] : explode(',', $this->scenes[$this->currentScene]);foreach ($sceneFields as $field) {if (array_key_exists($field, $rules)) {$newRules[$field] = $rules[$field];}}return $newRules;}return $rules;}/*** 覆盖设置 自定义验证器* @param $factory* @return mixed*/public function validator($factory){return $factory->make($this->validationData(), $this->getRules(),$this->messages(), $this->attributes());}/*** 最终验证方法* @throws \Illuminate\Auth\Access\AuthorizationException* @throws \Illuminate\Validation\ValidationException*/protected function handleValidate(){$instance = $this->getValidatorInstance();if ($instance->fails()) {$this->failedValidation($instance);}$this->passedValidation();}/*** 重写报错部分-适应API JSON下发的需求*/protected function failedValidation(Validator $validator){$error= $validator->errors()->all();throw new HttpResponseException(response()->json(['code'=>505,'msg'=>$error['0'],'data'=>[]]));}}

验证类的使用

<?phpnamespace App\Http\Requests;class MsgBoardRequest extends BaseRequest
{/*** Get the validation rules that apply to the request.** @return array*/public function rules(){return ['id'=>'required','title' => 'required|max:10','content' => 'required|max:255',];}/*** 获取已定义验证规则的错误消息** @return array*/public function messages(){return ['id.required'=>'ID不能为空','title.max' =>'标题太长了,简化一下吧','title.required'  => '标题不能为空','content.max' => '内容太多了','content.required'  => '内容不能为空',];}public $scenes = ['addMsg' => ['title', 'content'],'deleteMsg' =>['id']];
}

控制器中进行调用

public function addMsg(MsgBoardRequest $request){$request->validate('addMsg');
}
public function deleteMsg(MsgBoardRequest $request){$request->validate('deleteMsg');
}

Laravel添加验证场景提高针对性质的验证相关推荐

  1. 旷视科技:计算机视觉如何赋能身份验证场景

    本场 Chat 主要分享人脸识别活体检测技术应用场景以及如何实现. 本 Chat 将围绕以下话题展开: 深度学习在互联网身份验证服务中的应用: SDK+云端服务为身份验证保驾护航: 活体检测(动作.炫 ...

  2. 仿联想商城laravel实战---4、验证(lavarel的表单验证如何使用)

    仿联想商城laravel实战---4.验证(lavarel的表单验证如何使用) 一.总结 一句话总结: 验证规则和验证信息的数组:在控制器的方法中 1.注册页面中的用户名正确(比如是否重名,字段长度是 ...

  3. 提高国际短信验证成功率的方法

    随着国际化的不断发展,越来越多的应用程序需要向全球用户提供短信验证功能.然而,由于不同地区的移动运营商系统存在差异,国际短信验证的成功率.回填率往往受到很大挑战.这不仅会影响用户对产品的使用体验,还可 ...

  4. 公开课 | 旷视科技产品总监:计算机视觉如何赋能身份验证场景

    "刷脸"曾一度是人们互相调侃时的用语,如今早已深深地融入我们的生活.从可以人脸解锁的手机,到公司上下班的人脸识别打卡机,甚至最近有消息称北京地铁有望近期实现"刷脸&quo ...

  5. abap视图字段限制_在 Laravel 控制器中进行表单请求字段验证

    在 Web 应用中,用户提交的数据往往是不可预测的,因此一个非常常见的需求是对用户提交的表单请求进行验证,以确保用户输入的是我们所期望的数据格式.很多 Web 框架都对此功能专门提供了工具集,Lara ...

  6. iOS传感器开发——为APP添加手机密码、指纹进行安全验证

    iOS传感器开发--为APP添加手机密码.指纹进行安全验证 一.引言 iPhone5s之后,iPhone硬件上已支持进行指纹识别的功能,相应的,一些新的api也可以应用于APP中,进行用户安全的验证. ...

  7. iphone如何手动验证校园网(针对认证网页无法认证的学校)

    iphone如何手动验证校园网(针对认证网页无法认证的学校) 首先在apple store下载NAC client 然后打开 输入上面的服务器地址(先连接校园网,然后打开浏览器出来一个认证网页,复制网 ...

  8. IC验证工程师高效战斗手册--高效验证平台搭建和冒烟测试要注意什么?

    前面我们一起探讨了"如何制定高效的验证方案",方案和战略有了,便到了具体执行.执行的第一步,即是验证平台的搭建和冒烟测试,本篇我们就一起聊聊,高效的搭建验证平台和冒烟过程中需要注意 ...

  9. 采用集成的Windows验证和使用Sql Server身份验证进行数据库的登录

    采用集成的Windows验证和使用Sql Server身份验证进行数据库的登录 1.集成的Windows身份验证语法范例 1 <connectionStrings> <add nam ...

最新文章

  1. CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-7主节点CM安装子节点Agent配置...
  2. 纽瓦克市政厅电脑遭勒索软件劫持,部分公共服务被迫瘫痪
  3. 从面试官角度告诉大家如何准备项目方面的描述
  4. Golang实践录:一个数据库迁移的代码记录
  5. struts2(一) struts2入门
  6. vue更新路由router-view复用组件内容不刷新
  7. 基于jQuery的响应式网站视频插件FitVids.js
  8. idea java常用手册
  9. 软考 软件设计师考试经验分享、题型分析
  10. 牛客小白月赛17 - J - 计数(组合数学隔板法)
  11. Pytorch基础知识(7)单目标检测
  12. 美通企业日报 | 英特尔与阿里云签署战略合作备忘录;赛默飞在苏州扩建临床试验工厂...
  13. 遇到“该网页无法正常运作”,利用php的log查找错误
  14. 学习嵌入式Linux开发——RK3288开发板学习规划及目标
  15. [组合数学] 容斥原理polya定理
  16. Android使用WebView无法显示网页
  17. 【JAVA】使用intellij IDEA将项目打包为jar包
  18. OpenCV/C++ 图片锐化
  19. ZYNQ之路--搞清楚Xilinx开发软件之间的关系
  20. java web权限管理

热门文章

  1. SpringBoot中Tomcat配置(学习SpringBoot实战)
  2. PowerDesigner连接数据库,PowerDesigner将数据同步到数据库,PowerDesigner和数据库中的表进行比对
  3. SQLite 数据类型(http://www.w3cschool.cc/sqlite/sqlite-data-types.html)
  4. 1、cocos2d-x环境安装
  5. JQuery闭包,插件的写法
  6. Mysql 死锁过程及案例详解之用户自定义锁
  7. Python基础概念_14_常见术语
  8. python中的chr和ord函数_python chr()和ord() | 学步园
  9. Qt网络编程之UDP编程练习(20200219)
  10. 输出任意一元二次函数的结果值