返回顶部
首页 > 资讯 > 精选 >Laravel中怎么实现表单验证分层设计
  • 244
分享到

Laravel中怎么实现表单验证分层设计

2023-06-20 18:06:06 244人浏览 安东尼
摘要

本篇文章给大家分享的是有关Laravel中怎么实现表单验证分层设计,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。安装composer require w7/

本篇文章给大家分享的是有关Laravel中怎么实现表单验证分层设计,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

安装

composer require w7/engine-validate

介绍

首先此验证器也是基于illuminate/validation的,关于它的详细说明可以直接查看它的文档,这里就不过多说明了。

使用

首先我们建立一个和控制器相对应的验证层

app├── Http│   ├── Controllers│   │   └── UserController.PHP│   └── Validate│       └── UserValidate.php

验证器

验证器代码:

class UserValidate extends Validate{    protected $rule = [        'user' => 'required|email',        'pass' => 'required|alpha_num'    ];    protected $message = [        'user.required' => '账号不可为空',        'pass.required' => '密码不可为空',    ];    protected $customAttributes = [       'user' => '账号',       'pass' => '密码',    ];}

控制器代码:

class UserController extends BaseController{    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;    public function login(Request $request)    {        $data = UserValidate::make()->check($request->all());    }}

这个时候,如果值不符合要求,会抛出一个ValidateException异常,我们可以选择手动捕获,也可以选择在异常捕获类里面做一个全局的处理:

    public function render($request, Throwable $e)    {        if ($e instanceof ValidateException) {            return response()->JSON([                'code'    => -1,                'message' => $e->getMessage()            ]);        }        return parent::render($request, $e);    }

这样我们就不需要再控制器里面管理任何的验证异常了。

此时,控制器中的$data一定是符合我们需求的数据,然后可以紧接着做对应的业务处理

验证场景

这个时候,如果我们的UserController控制器中又添加了一个reGISter方法,在以上两个字段的需求同时增加了name,应该如何处理呢?

我们可以使用类的$scene属性来指定某一场景下需要验证的字段

验证器代码修改如下:

class UserValidate extends Validate{    protected $rule = [        'user' => 'required|email',        'pass' => 'required|alpha_num',        'name' => 'required|alpha'    ];    protected $message = [        'user.required' => '账号不可为空',        'pass.required' => '密码不可为空',    ];    protected $customAttributes = [       'user' => '账号',       'pass' => '密码',       'name' => '用户名称',    ];    protected $scene = [       'login'    => ['user', 'pass'],       'register' => ['user', 'pass', 'name']    ];}

此时:login场景对应的验证userpass字段,而register场景对应的验证user,pass,name字段

控制器代码修改如下:

class UserController extends BaseController{    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;    public function login(Request $request)    {        $data = UserValidate::make()->scene('login')->check($request->all());    }    public function register(Request $request)    {        $data = UserValidate::make()->scene('register')->check($request->all());    }}

使用验证器的scene方法来指定当前需要验证的场景名称

验证中间件

默认我们一个控制器对应一个验证器,一个方法对应一个场景名称,基于此特点,我们可以编写一些更为简易的方法来解决验证,我们可以编写一个中间件来解决此问题,点击查看文档说明,中间件完整命名空间为:Itwmw\Validate\Middleware\Laravel\ValidateMiddleware

中间件设置

首先我们需要为他指定控制器和验证器的对应关系,在app/Providers目录下新建一个ValidateServiceProvider.php文件,写入如下代码:

<?phpnamespace App\Providers;use Illuminate\Support\ServiceProvider;use Itwmw\Validate\Middleware\ValidateMiddlewareConfig;class ValidateServiceProvider extends ServiceProvider{    public function register()    {        ValidateMiddlewareConfig::instance()            ->setAutoValidatePath('App\\Http\\Controllers\\', 'App\\Http\\Validate\\');    }}

其中setAutoValidatePath为指定控制器和验证器的对应关系,可以设定多个,不限制数量,然后我们将ValidateServiceProvider注册一下,在config/app.php文件中找到providers,在其中添加App\Providers\ValidateServiceProvider::class

注意:不可以放在Illuminate\Validation\ValidationServiceProvider::class之前

使用中间件

这个时候,我们可以将中间件注册为全局中间件,也可以不注册,注册方法:中间件《Laravel 7 中文文档》

定义路由:

Route::middleware(ValidateMiddleware::class)->group(function () {    Route::any('/login', [\App\Http\Controllers\UserController::class, 'login']);    Route::any('/register', [\App\Http\Controllers\UserController::class, 'register']);});

控制器代码修改如下:

class UserController extends BaseController{    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;    public function login(Request $request)    {        $data = get_validate_data($request);    }    public function register(Request $request)    {        $data = get_validate_data($request);    }}

以上就是Laravel中怎么实现表单验证分层设计,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: Laravel中怎么实现表单验证分层设计

本文链接: https://lsjlt.com/news/299052.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Laravel中怎么实现表单验证分层设计
    本篇文章给大家分享的是有关Laravel中怎么实现表单验证分层设计,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。安装composer require w7/...
    99+
    2023-06-20
  • Javascript中怎么实现表单验证
    这篇文章将为大家详细讲解有关Javascript中怎么实现表单验证,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.表单项不能为空: ﹤ scri...
    99+
    2024-04-02
  • HTML5中怎么实现表单验证
    这篇文章将为大家详细讲解有关HTML5中怎么实现表单验证,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。<!DOCTYPE html>&...
    99+
    2024-04-02
  • BootStrap怎么实现表单验证
    这篇文章主要为大家展示了“BootStrap怎么实现表单验证”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“BootStrap怎么实现表单验证”这篇文章吧。Boo...
    99+
    2024-04-02
  • css怎么实现表单验证
    本篇内容介绍了“css怎么实现表单验证”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!   原理   表...
    99+
    2024-04-02
  • jQuery怎么实现表单验证
    这篇文章将为大家详细讲解有关jQuery怎么实现表单验证,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体代码如下所示:<script type=&quo...
    99+
    2024-04-02
  • JavaScript怎么实现表单验证
    这篇文章主要介绍“JavaScript怎么实现表单验证”,在日常操作中,相信很多人在JavaScript怎么实现表单验证问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript怎么实现表单验证”的疑...
    99+
    2023-07-02
  • vue中的rules表单验证怎么实现
    这篇文章主要介绍“vue中的rules表单验证怎么实现”,在日常操作中,相信很多人在vue中的rules表单验证怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue中的rules表单验证怎么实现”的疑...
    99+
    2023-07-02
  • layui表单验证select下拉框怎么实现验证
    这篇文章主要介绍layui表单验证select下拉框怎么实现验证,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!layui 的form表单里的select 一开始以为加上lay-ver...
    99+
    2024-04-02
  • AngularJS怎么实现表单验证功能
    这篇文章给大家分享的是有关AngularJS怎么实现表单验证功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:在AngularJS的管辖下,每个表单form都会创建一个...
    99+
    2024-04-02
  • 怎么使用HTML5实现表单验证
    这篇文章主要介绍“怎么使用HTML5实现表单验证”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用HTML5实现表单验证”文章能帮助大家解决问题。 HTML5...
    99+
    2024-04-02
  • HTML怎么实现表单自动验证
    这篇文章主要讲解了“HTML怎么实现表单自动验证”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTML怎么实现表单自动验证”吧!   HTML 表单验证也...
    99+
    2024-04-02
  • Javascript中如何实现表单验证
    本篇文章为大家展示了Javascript中如何实现表单验证,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 检查一段字符串是否全由数字组成: ﹤ scr...
    99+
    2024-04-02
  • 纯CSS怎样实现表单验证
    这篇文章将为大家详细讲解有关纯CSS怎样实现表单验证,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在我们的日常业务中,表单验证是个很常见设计需求,像一些登录注册框,问卷调查也都需要用到表单验证。一般我们的...
    99+
    2023-06-08
  • laravel表单验证的错误提示怎么显示中文
    这篇文章主要讲解了“laravel表单验证的错误提示怎么显示中文”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“laravel表单验证的错误提示怎么显示中文”吧!laravel 表单验证中文提...
    99+
    2023-07-05
  • jQuery怎么实现表单设计
    这篇“jQuery怎么实现表单设计”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“jQuery怎么实现表单设计”文章吧。步骤1...
    99+
    2023-07-05
  • jquery中validate如何实现表单验证
    这篇文章主要介绍了jquery中validate如何实现表单验证,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、目的为了更好地实现人机交互...
    99+
    2024-04-02
  • Ajax怎么实现带提示的验证表单
    这篇文章主要介绍“Ajax怎么实现带提示的验证表单”,在日常操作中,相信很多人在Ajax怎么实现带提示的验证表单问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ajax怎么实现...
    99+
    2024-04-02
  • vue+vue validator怎么实现表单验证功能
    今天小编给大家分享一下vue+vue validator怎么实现表单验证功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所...
    99+
    2024-04-02
  • jQuery怎么实现注册正则表单验证
    使用jQuery实现注册正则表单验证的步骤如下:1. 添加jQuery库文件到HTML页面中:```html```2. 编写HTML...
    99+
    2023-08-11
    jQuery
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作