Laravel表单验证实例详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33867131/article/details/86137946

在项目下执行命令:php artisan make:request CreateProjectRequest(随表起一个名字)
(1)执行命令后,会生成一个文件:app/Http/Requests/CreateProjectRequest.php
修改CreateProjectRequest.php/rules()方法:
public function rules()
{
    return [
        // projects表的name字段,必填|唯一
        'name' => 'required|unique:projects,name',
        // projects表的thumbnail字段,图片|尺寸260×100
        'thumbnail' => 'image|dimensions:min_width=260,min_height=100'
    ];
}
(2)CreateProjectRequest.php新增 messages()方法:
// 因为错误信息是英文,我们当然要改成中文了,自定义下面的方法就可以啦
public function messages()
{
    return [
        'name.required'=>'项目名称是必填的~',
        'name.unique'=>'项目名称必须是唯一的~'
    ];
}
(3)在你使用表单的ControllerliRe里使用CreateProjectRequest(将Request替换为CreateProjectRequest)
public function store(CreateProjectRequest $request){
    $this->repo->create($request);
    return '成功';
}
(4)在HTML填入错误提示信息($errors全局变量)
@if($errors->any())
<ul class="alert alert-danger">
    @foreach($errors->all() as $erro)
        <li>{{ $erro }}</li>
    @endforeach
</ul>
@endif    

注意了:只对当前用户进行唯一性的数据验证

    (1)导入包:use Illuminate\Validation\Rule;
    (2)修改CreateProjectRequest.php/rules()方法:
    public function rules()
    {
        return [
            // projects表的name字段,必填|唯一
            'name' => [
                'required',
		// request()->user()能够获取到当前登录的用户
                Rule::unique('projects')->where(function ($query){
                    return $query->where('user_id', request()->user()->id);
                })
            ],
        ];
    }

猜你喜欢

转载自blog.csdn.net/qq_33867131/article/details/86137946