laravel中validator的使用方法介绍(代码示例)
内容导读
收集整理的这篇技术教程文章主要介绍了laravel中validator的使用方法介绍(代码示例),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5156字,纯文字阅读大概需要8分钟。
内容图文
本篇文章给大家带来的内容是关于laravel中validator的使用方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。web 开发过程中经常会需要进行参数验证,laravel 中我们常用 validator 或者 request 这两种方法来进行验证,但是这两种验证都不是很方便进行自定义提示信息,自定义验证规则,所以下面来介绍一种很方便的用法:
新建抽象类
<?phpnamespace AppHttpValidators;use Validator;abstract class AbstractValidator{ /** * Validator * * @var IlluminateValidationFactory */ 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() { }}
新建中间件
<?phpnamespace AppHttpMiddleware;use Closure;use IlluminateHttpRequest;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 = 'AppHttpValidators'; /** * Handle an incoming request. * * @param IlluminateHttpRequest $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
<?phpnamespace AppHttpValidatorsAdmin;use AppHttpValidatorsAbstractValidator;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']);
具体使用可以自行配置~
以上就是laravel中validator的使用方法介绍(代码示例)的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是为您收集整理的laravel中validator的使用方法介绍(代码示例)全部内容,希望文章能够帮你解决laravel中validator的使用方法介绍(代码示例)所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 lecms, classcms, fastadmin, pbootcms, phpcms, eyoucms, yzmcms, PHP, xunruicms, jizhicms, dedecms, wordpress, hkcms, yzncms, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。