php实现多字段unique验证,laravel 表单验证实现多个字段组合后唯一

Laravel 表单验证器的几种使用方法

1、使用控制器的 validate 方法进行参数验证

/**

* 保存一篇新的博客文章。

*

* @param Request $request

* @return Response

*/

public function store(Request $request)

{

$this->validate($request, [

'title' => 'required|unique:posts|max:255',

'body' => 'required',

]);

// 文章内容是符合规则的,存入数据库

}

2、手动创建验证器实例进行验证

使用默认的验证信息

/**

* 保存一篇新的博客文章。

*

* @param Request $request

* @return Response

*/

public function store(Request $request)

{

$rules = [

'title' => 'required|unique:posts|max:255',

'body' => 'required',

];

$validator = Validator::make($request->all(), $rules);

if ($validator->fails()) {

return redirect('post/create')->withErrors($validator)->withInput();

}

// 文章内容是符合规则的,存入数据库

}

使用自定义的验证信息

/**

* 保存一篇新的博客文章。

*

* @param Request $request

* @return Response

*/

public function store(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()) {

return redirect('post/create')->withErrors($validator)->withInput();

}

// 文章内容是符合规则的,存入数据库

}

3、创建表单请求进行验证

创建表单请求文件:php artisan make:request ExampleRequest

表单请求文件内容:

namespace App\Http\Requests;

use Illuminate\Contracts\Validation\Validator;

use Illuminate\Foundation\Http\FormRequest;

use Illuminate\Http\Exceptions\HttpResponseException;

use Illuminate\Http\JsonResponse;

class ExampleRequest 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()

{

return [

'title' => 'required|max:20',

'name' => ['required', new Uppercase()],

];

}

/**

* 获取已定义的验证规则的错误消息。

*

* @return array

*/

public function messages()

{

return [

'title.required' => 'A title is required',

'title.max' => 'The title may not be greater than 20 characters.',

];

}

/**

* 兼容 form 表单请求与 ajax 请求或者 json api 请求

* 验证失败,返回错误信息

*

* @param Validator $validator

* @throws

*/

protected function failedValidation(Validator $validator)

{

if ($this->wantsJson() || $this->ajax()) {

throw new HttpResponseException(

new JsonResponse([

'code' => 500,

'msg' => $validator->errors()->first(),

'data' => new \stdClass()

])

);

} else {

parent::failedValidation($validator);

}

}

}

在控制器中使用 ExampleRequest

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

use App\Http\Requests\ExampleRequest;

class ExampleController extends Controller

{

public function valid(ExampleRequest $request)

{

$params = $request->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 表单验证内容请搜索聚米学院以前的文章或继续浏览下面的相关文章希望大家以后多多支持聚米学院!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Laravel提供了强大的验证工具,可以轻松地实现验证。 以下是一些基本的步骤: 1. 在控制器中创建一个验证器 使用以下命令创建一个验证器类: ``` php artisan make:request MyFormRequest ``` 这将创建一个名为`MyFormRequest`的类,用于验证。 2. 在验证器类中定义规则 在`MyFormRequest`类中,您可以使用`rules()`方法定义字段验证规则。例如: ``` public function rules() { return [ 'name' => 'required|max:255', 'email' => 'required|email|unique:users|max:255', 'password' => 'required|confirmed|min:6', ]; } ``` 这个例子中,`name`字段是必需的,并且不能超过255个字符。`email`字段也是必需的,并且必须是一个有效的电子邮件地址,并且必须是唯一的。`password`字段必须与`password_confirmation`字段匹配,并且必须至少包含6个字符。 3. 在控制器中使用验证器 在控制器的方法中,您可以使用`MyFormRequest`类来验证数据。例如: ``` public function store(MyFormRequest $request) { // 如果验证失败,将自动重定向到之前的页面 // 并且错误消息将可用于 $errors 变量 $validatedData = $request->validated(); // 保存数据... } ``` 如果数据无效,Laravel将自动将用户重定向到之前的页面,并提供错误消息。 4. 显示错误消息 在视图中,您可以使用`$errors`变量来访问错误消息。例如: ``` @if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif ``` 这将在页面上显示所有验证错误消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值