Laravel 表单验证 使用技巧

简介: Laravel 表单验证 使用技巧

表单验证


怎么设置动态的验证规则?


如果我们的限制规则是动态依赖于其他条件的,那么我们可以动态地创建规则数组


public function save(Request $request)
    {
        $validationArray = [
            'title' => 'required',
            'name' => 'required',
            'logo' => 'file|max:1024',
            'position' => 'required',
        ];
        if (!Auth::check()) {
            $validationArray = array_merge($validationArray, [
                'email' => 'required|email|unique:users',
                'password' => 'required|confirmed|min:5',
                'name' => 'required'
            ]);
        }
        //
    }


自定义抛出422状态码


如果我们不使用 validate () 或 Form Request,但仍然需要使用相同的 422 状态码和错误结构抛出错误,那么可以手动抛出 throw ValidationException::withMessages()


if (! $user || ! Hash::check($request->password, $user->password)) {
    throw ValidationException::withMessages([
        'email' => ['邮箱格式不正确'],
    ]);
}


图片验证


我们在验证上传的图片时,可以指定所需的尺寸


['image' => 'dimensions:max_width=1096,max_height=1096']


自定义验证错误的信息


我们只需在 resources/lang/xx/validation.php 文件创建适当的数组结构,就可以定义每个 字段、规则和语言的验证错误消息。


'custom' => [
     'email' => [
        'required' => '电子邮箱必填',
     ],
],


某些条件的验证规则


如果验证规则依赖于某些条件,则可以通过将 withValidator() 添加到 FormRequest 类中来修改规则,并在那里指定自定义逻辑。


例如,如果我们只想为某些用户角色添加验证规则。


use Illuminate\Validation\Validator;
class XxxxxRequest extends FormRequest {
    public function withValidator(Validator $validator) {
        if (auth()->user()->is_admin) {
            $validator->addRules(['xxxx' => 'required']);
        }
    }
}


更改默认验证消息


如果要更改特定字段和特定验证规则的默认验证错误消息,只需将 messages() 方法添加到 FormRequest 类中。


class UserRequest extends FormRequest
{
    public function rules()
    {
        return ['name' => 'required'];
    }
    public function messages()
    {
        return ['name.required' => '请填写姓名'];
    }
}


预验证


我们想在默认的 Laravel 验证之前修改某个字段,(类似常用的beforeXxx(){}、afterXxx(){})

FormRequest 类中有一个方法 prepareForValidation () , 能实现我们的需求:

在验证之前修改字段


protected function prepareForValidation()
{
    $this->merge([
        'myBlog' => Illuminate\Support\Str::slug($this->myBlog),
    ]);
}


第一次验证错误时就终止程序


默认情况下,将在列表中返回 Laravel 验证错误,检查所有验证规则。

但是如果我们想要在第一个错误之后终止这个过程,使用验证规则叫做 bail:


$request->validate([
    'title' => 'bail|required|unique:posts|max:255',
    'body' => 'required',
]);


相关文章
|
6月前
|
人工智能 前端开发 物联网
|
6月前
|
JavaScript 前端开发 安全
jQuery 第十一章(表单验证插件推荐)
jQuery 第十一章(表单验证插件推荐)
104 1
|
11月前
ElementUI之CUD+表单验证
ElementUI之CUD+表单验证
46 0
|
前端开发 关系型数据库 API
关于一篇ElementUI之CUD+表单验证
关于一篇ElementUI之CUD+表单验证
51 0
|
数据安全/隐私保护
Yii2.0如何进行表单验证?底层原理是什么?
Yii2.0如何进行表单验证?底层原理是什么?
113 0
|
数据库
Yii2如何进行表单验证?底层原理是什么?
Yii2如何进行表单验证?底层原理是什么?
Yii2.0框架中如何进行表单验证?有哪些内置的验证器?
Yii2.0框架中如何进行表单验证?有哪些内置的验证器?
153 0
|
JavaScript PHP
laravel注册页面(jquery验证)
laravel注册页面(jquery验证)
216 0
|
数据采集 数据安全/隐私保护 开发者
普通的表单验证 | 学习笔记
快速学习普通的表单验证
112 0
下一篇
无影云桌面