laravel 表单验证
表单验证,可以用一下三种方式实现验证。
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‘ => []]);
}
//--验证成功后,业务代码...
}
/**
* 验证参数
* @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‘]
]);
}
//--验证成功,业务操作...
}
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();
//返回已验证的参数值,会过滤掉没有参与验证的参数
}
原文:https://www.cnblogs.com/mg007/p/13577684.html