laravel 表单验证实现多个字段组合后唯一
Laravel表单验证器的几种使用方法
1、使用控制器的validate方法进行参数验证
/**
*保存一篇新的博客文章。
*
*@paramRequest$request
*@returnResponse
*/
publicfunctionstore(Request$request)
{
$this->validate($request,[
'title'=>'required|unique:posts|max:255',
'body'=>'required',
]);
//文章内容是符合规则的,存入数据库
}
2、手动创建验证器实例进行验证
使用默认的验证信息
/**
*保存一篇新的博客文章。
*
*@paramRequest$request
*@returnResponse
*/
publicfunctionstore(Request$request)
{
$rules=[
'title'=>'required|unique:posts|max:255',
'body'=>'required',
];
$validator=Validator::make($request->all(),$rules);
if($validator->fails()){
returnredirect('post/create')->withErrors($validator)->withInput();
}
//文章内容是符合规则的,存入数据库
}
使用自定义的验证信息
/**
*保存一篇新的博客文章。
*
*@paramRequest$request
*@returnResponse
*/
publicfunctionstore(Request$request)
{
$rules=[
'title'=>'required|unique:posts|max:255',
'body'=>'required',
];
$messages=[
'title.required'=>'请填写文章标题',
'title.unique'=>'文章标题不能重复',
'title.max'=>'文章标题不能超过255个字符',
'body.required'=>'请填写文章内容',
];
$validator=Validator::make($request->all(),$rules,$messages);
if($validator->fails()){
returnredirect('post/create')->withErrors($validator)->withInput();
}
//文章内容是符合规则的,存入数据库
}
3、创建表单请求进行验证
创建表单请求文件:phpartisanmake:requestExampleRequest
表单请求文件内容:
'required|max:20',
'name'=>['required',newUppercase()],
];
}
/**
*获取已定义的验证规则的错误消息。
*
*@returnarray
*/
publicfunctionmessages()
{
return[
'title.required'=>'Atitleisrequired',
'title.max'=>'Thetitlemaynotbegreaterthan20characters.',
];
}
/**
*兼容form表单请求与ajax请求或者jsonapi请求
*验证失败,返回错误信息
*
*@paramValidator$validator
*@throws
*/
protectedfunctionfailedValidation(Validator$validator)
{
if($this->wantsJson()||$this->ajax()){
thrownewHttpResponseException(
newJsonResponse([
'code'=>500,
'msg'=>$validator->errors()->first(),
'data'=>new\stdClass()
])
);
}else{
parent::failedValidation($validator);
}
}
}
在控制器中使用ExampleRequest
all(); dd($params); } }
在laravel表单验证中,常会遇到需要几个字段组合起来做唯一限制。
解决方案如下:
where[]=['parentId','=',where[]=[′parentId′,′=′,this->request->get('parentId')];
return[
'menuTitle'=>['required','max:32','min:2',Rule::unique('admin_menu','menuTitle')->where(function($query)use($where){
$query->where($where)->whereNull('deleted_at');
})->ignore($id)],
'menuTitleEn'=>['required','max:32','min:2',Rule::unique('admin_menu','menuTitleEn')->where(function($query)use($where){
$query->where($where)->whereNull('deleted_at');
})->ignore($id)],
'menuRoute'=>['required',Rule::unique('admin_menu','menuRoute')->ignore($id)],
'menuIcon'=>['required','min:2','max:32'],
'routeName'=>['sometimes','min:2','max:32'],
'parentId'=>['required','numeric'],
'order'=>['sometimes','numeric']
];
到此这篇关于laravel表单验证实现多个字段组合后唯一的文章就介绍到这了,更多相关laravel表单验证内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。