Laravel 表单验证 使用技巧_throw validationexception withmessages

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

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

    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' => '请填写姓名'];
    }
}

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

726070789397)]
[外链图片转存中…(img-43jb8RKf-1726070789397)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值