首页 > 其他 > 详细

laravel 表单验证

时间:2020-08-28 22:42:56      阅读:76      评论:0      收藏:0      [点我收藏+]

laravel 表单验证

表单验证,可以用一下三种方式实现验证。

1、常规验证

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

public function update(Request $request)
{
    $params = $request->all();
    $validate = Validator::make($params, [
        ‘name‘ => ‘bail|required‘,
        ‘status‘ => ‘bail|required|integer‘,
    ], [
        ‘name.required‘ => ‘请填写名称‘,
        ‘status.required‘ => ‘status参错错误‘,
        ‘status.integer‘ => ‘status参错错误‘,
    ]);
    if ($validate->fails()) {
        $msg = $validate->errors()->first();
        return response()->json([‘error‘ => 1, ‘msg‘ => $msg, ‘data‘ => []]);
    }
    
    //--验证成功后,业务代码...
}

2、封装一个方法验证

/**
     * 验证参数
     * @param $params
     * @param string $type 类型
     * @return array
     */
    private function _validate($params, $type = ‘store‘)
    {
        $rules = [];
        $messages = [];
        $return = [‘error‘ => 0, ‘msg‘ => ‘‘, ‘data‘ => []];

        switch ($type) {
            case ‘store‘:
                $rules = [
                    ‘name‘ => ‘bail|required‘,
                    ‘status‘ => ‘bail|required|integer‘,
                ];
                $messages = [
                    ‘name.required‘ => ‘请填写名称‘,
                    ‘status.required‘ => ‘status参错错误‘,
                    ‘status.integer‘ => ‘status参错错误‘,
                ];
                break;
            case ‘update‘:
                $rules = [
                    ‘id‘ => ‘bail|required‘,
                    ‘name‘ => ‘bail|required‘,
                    ‘status‘ => ‘bail|required|integer‘,
                ];
                $messages = [
                    ‘id.required‘ => ‘ID有误‘,
                    ‘name.required‘ => ‘请填写名称‘,
                    ‘status.required‘ => ‘status参错错误‘,
                    ‘status.integer‘ => ‘status参错错误‘,
                ];
                break;
        }

        $validate = Validator::make($params, $rules, $messages);
        if ($validate->fails()) {
            $msg = $validate->errors()->first();
            $return[‘error‘] = 1;
            $return[‘msg‘] = $msg;
        }

        return $return;
    }

调用

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

public function update(Request $request)
{
    $params = $request->all();
	$rs = $this->_validate($params, ‘update‘);
    if ($rs[‘error‘] != 0) {
        return response()->json([
            ‘error‘ => $rs[‘error‘], 
            ‘msg‘ => $rs[‘msg‘], 
            ‘data‘ => $rs[‘data‘]
        ]);
    }
    //--验证成功,业务操作...
}

3、创建请求类验证

php artisan make:request FormRequest
php artisan make:request CreateOrUpdateRequest

FormRequest的目的是重写 failedValidation,将验证错误信息返回。

<?php

namespace App\Http\Requests;

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

class FormRequest extends BaseFormRequest
{
    protected function failedValidation(Validator $validator) {
        $error= $validator->errors()->all();
        throw new HttpResponseException(
            response()->json([‘error‘=>‘1‘,‘msg‘=>$error[0],‘data‘=>[]])
        );
    }
}
<?php

namespace App\Http\Requests;

class CreateOrUpdateRequest extends FormRequest	//继承上面的FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        $rules = [
            ‘name‘ => ‘required|max:255‘
        ];
		
        //根据请求方式来判断,新增还是编辑,post=新增,put=编辑
        switch ($this->method()) {
            case ‘POST‘:
                $rules[‘status‘] = ‘bail|required|integer‘;
                break;
            case ‘PUT‘:
                $rules[‘id‘] = ‘bail|required‘;
                $rules[‘status‘] = ‘bail|required|integer‘;
                break;
        }

        return $rules;
    }

    public function messages()
    {
        return [
            ‘name.required‘ => ‘名称必填‘,
            ‘name.status‘  => ‘状态过长‘,
        ];
    }
}

调用

//直接注入,即完成验证
public function update(CreateOrUpdateRequest $request)
{
    $data = $request->validated();
    //返回已验证的参数值,会过滤掉没有参与验证的参数
}

laravel 表单验证

原文:https://www.cnblogs.com/mg007/p/13577684.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!