Laravel request表单验证场景的使用

2021-04-18   阅读:197   分类:后端    标签: Laravel

Laravel创建表单请求验证可以使用 make:request 来创建,具体创建方式可以参考这篇文章:laravel5.8使用ajax+验证器验证实现ajax返回验证数据

我们创建一个在CheckAdmin.php验证文件

编写如下代码:

<?php

namespace App\Http\Requests\Admin;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;

class CheckAdmin extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {

        if (Route::currentRouteName() == 'admin.admin.edit') {
            return [
                'admin_name' => 'sometimes|required',
                'admin_realname' => 'sometimes|required',
                'stop' => 'sometimes|required',
            ];
        }else{
            return [
                'admin_name' => 'sometimes|required',
                'admin_realname' => 'sometimes|required',
                'admin_password' => 'sometimes|required|confirmed|min:6',
                'password_confirmation ' => 'sometimes|required',
                'stop ' => 'sometimes|required',

            ];
        }
    }
    /**
     * 获取已定义验证规则的错误消息。
     *
     * @return array
     */
    public function messages()
    {
        return [
            'admin_name.required' => '请输入账号',
            'admin_realname.required' => '请输入姓名',
            'admin_password.required' => '请输入密码',
            'admin_password.min' => '密码长度不能小于6个字符',
            'password_confirmation.required' => '请输入确认密码',
            'admin_password.confirmed'=>"密码与确认密码不一致",
            'stop.required' => '请选择账号状态',
        ];
    }

//    ajax返回
    public function failedValidation(Validator $validator)
    {
        throw (new HttpResponseException(response()->json([
            'code' => 500,
            'msg' => $validator->errors()->first(),
        ], 200)));
    }


}
?>

解析:这部分代码主要是以下这段,我们通过获取路由别名来判断执行那段验证规则:

<?php
if (Route::currentRouteName() == 'admin.admin.edit') {
	return [
		'admin_name' => 'sometimes|required',
		'admin_realname' => 'sometimes|required',
		'stop' => 'sometimes|required',
	];
}else{
	return [
		'admin_name' => 'sometimes|required',
		'admin_realname' => 'sometimes|required',
		'admin_password' => 'sometimes|required|confirmed|min:6',
		'password_confirmation ' => 'sometimes|required',
		'stop ' => 'sometimes|required',

	];
}
?>

我们实现的是一个添加用户场景和修改用户信息场景。这样通过上面的判断就可以对其分别验证。

【腾讯云】618云上GO!云服务器限时秒杀,1核2G首年95元!

‘简忆博客’微信公众号 扫码关注‘简忆博客’微信公众号,获取最新文章动态
转载:请说明文章出处“来源简忆博客”。http://www.tpxhm.com/adetail/661.html

×
觉得文章有用就打赏一下文章作者
微信扫一扫打赏 微信扫一扫打赏
支付宝扫一扫打赏 支付宝扫一扫打赏

文章评论(0)

登录
简忆博客壁纸 头像

简忆博客
勤于学习,乐于分享。

置顶推荐

打赏本站

如果你觉得本站很棒,可以通过扫码支付打赏哦!
微信扫码:你说多少就多少~
微信扫码
支付宝扫码:你说多少就多少~
支付宝扫码
×