各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > PHP

laravel中validator的使用方法介绍(代码示例)

管理员 2023-09-05
PHP
185

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修复,程序杀毒,插件定制都可以提供最佳解决方案。

扫码关注

qrcode

QQ交谈

回顶部