如何优雅的使用 laravel 的 validator验证方法
网络编程 2021-07-04 23:24www.168986.cn编程入门
web 开发过程中经常会需要进行参数验证,这篇文章主要介绍了如何优雅的使用 laravel 的 validator验证方法,非常具有实用价值,需要的朋友可以参考下
web 开发过程中经常会需要进行参数验证,laravel 中我们常用 validator 或者 request 这两种方法来进行验证,这两种验证都不是很方便进行自定义提示信息,自定义验证规则,所以狼蚁网站SEO优化来介绍一种很方便的用法
新建抽象类
<?php namespace App\Http\Validators; use Validator; abstract class AbstractValidator { / Validator @var \Illuminate\Validation\Factory / protected $validator; / Validation data key => value array @var array / protected $data = array(); / Validation errors @var array / protected $errors = array(); / Validation rules @var array / protected $rules = array(); / Validation messages @var array / protected $messages = array(); / Validation codes @var array / protected $codes = array(); public function __construct(array $data) { $this->data = $data; $this->before(); $this->validator = Validator::make($this->data, $this->rules, $this->messages); $this->after(); } / Set data to validate @return validator / public function getValidator() { return $this->validator; } / Set data to validate @return $this / public function with(array $data) { $this->data = $data; $this->before(); $this->validator = $this->validator->make($this->data, $this->rules, $this->messages); $this->after(); return $this; } / Validation passes or fails @return boolean / public function passes() { if ($this->validator->fails()) { $this->errors = $this->validator->messages(); return false; } return true; } / Return errors, if any @return array / public function errors() { return $this->errors; } / Return errors codes, if any @return array / public function getCodes() { return $this->codes; } / getRules @return array / public function getRules() { return $this->rules; } / getData @return array / public function getData() { return $this->data; } / getErrors @return array / public function getErrors() { return $this->errors; } / getMessages @return array / public function getMessages() { return $this->messages; } / setRule @param string $key @param string $value @return $this / public function setRule($key, $value) { $this->rules[$key] = $value; return $this; } / emptyRules @return $this / public function emptyRules() { $this->rules = array(); return $this; } / sometimes @param string $attribute @param string|array $rules @param callable $callback @return $this / public function sometimes($attribute, $rules, callable $callback) { $this->validator->sometimes($attribute, $rules, $callback); return $this; } / resolver @param Closure $resolver @return $this / public function resolver(Closure $resolver) { Validator::resolver($resolver); return $this; } / replacer @param Closure $resolver @return $this / public function replacer($replace, Closure $resolver) { Validator::replacer($replace, $resolver); return $this; } / extendImplicit @param Closure $resolver @return $this / public function extendImplicit($extendImplicit, Closure $resolver) { Validator::extendImplicit($extendImplicit, $resolver); return $this; } / extend @param string $rule @param \Closure|string $extension @param string $message @return $this / public function extend($rule, $extension, $message = null) { Validator::extend($rule, $extension, $message); return $this; } / before (extend(),resolver()) @return $this / public function before() { } / after(sometimes()) @return $this / public function after() { } }
新建中间件
<?php namespace App\Http\Middleware; use Closure; use \Illuminate\Http\Request; class ValidateAdminMiddleware { / This namespace is applied to the controller routes in your routes file. In addition, it is set as the URL generator's root namespace. @var string / protected $namespace = 'App\Http\Validators'; / Handle an ining request. @param \Illuminate\Http\Request $request @param \Closure $next @return mixed / public function handle(Request $request, Closure $next, $validator = null) { if ($request->isMethod('POST')) { $type = $request->segment(1); if ($validator) { $validator = $this->namespace . '\\' . studly_case($type) . '\\' . studly_case($validator) . 'Validator'; $validator = new $validator($request->all()); if (!$validator->passes()) { if ($request->isAjax()) { return $validator->errors()->first(); } else { return redirect()->back() ->withErrors($validator->getValidator()) ->withInput(); } } } } return $next($request); } }
新建 TestTestValidator
<?php namespace App\Http\Validators\Admin; use App\Http\Validators\AbstractValidator; class TestValidator extends AbstractValidator { / Validation rules @var Array / protected $rules = array( 'name' => ['required', 'test', 'min:1'], ); / Validation messages @var Array / protected $messages = array( 'name.required' => '必填', 'name.min' => '最少1个字符', 'name.test' => '测试', ); / 自定义验证规则或者扩展Validator类 / public function before() { $this->extend('test', function ($attribute, $value, $parameters) { return bool; }); } }
路由中如何使用
Route::post('/', ['middleware' => ['valiAdmin:Test'], 'uses' => 'IndexController@test']);
具体使用可以自行配置~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持狼蚁SEO。
编程语言
- 宿迁百度关键词排名指南:实现精准营销的关键
- 四川SEO优化怎么做网络推广
- 立昂技术备案老域名收购:如何为您的业务赋能
- 安徽百度关键词seo贵不贵,一般需要多少钱
- 吉林百度快照排名怎么做电话营销
- 多伦新手做SEO怎么做
- 甘肃优化关键词排名推广怎么做论坛营销
- 沙雅SEO网站推广:提升您的在线可见性
- 四川SEO优化如何提升销售额和销售量
- 聂荣网站排名优化:提升网站可见性的全方位指
- 涞水SEO:提升地方企业在线可见性的策略
- 辽宁百度seo排名怎样做网站排名
- 临湘哪有关键词排名优化:提升网站可见度的关
- 黑龙江百度网站优化有没有优惠
- 凉城优化关键词排名推广:提升您的网络可见性
- 萝北整站优化:提升您网站流量和排名的全面指