首页 > 解决方案 > Laravel 动态生成的字段验证

问题描述

我有一个提交大量图片的表单,假设有 5 张图片。我将它们命名为 img1、img2..、img5。现在我正在一一验证这些字段。

我的验证码

$rules = [
            'image1' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:3072',
            'image2' => 'image|mimes:jpeg,png,jpg,gif,svg|max:3072',
            'image3' => 'image|mimes:jpeg,png,jpg,gif,svg|max:3072',
            'image4' => 'image|mimes:jpeg,png,jpg,gif,svg|max:3072',
            'image5' => 'image|mimes:jpeg,png,jpg,gif,svg|max:3072',
        ];

$msg = [
            'image1.required' => 'Image is required',
            'image1.image' => 'Please upload an Image for Image ',
            'image1.mimes' => 'Image type should be jpeg or jpg or png or gif or svg',
            'image1.max' => 'Image size should be less than or equal 3MB',
            'image2.image' => 'Please upload an Image for Image ',
            'image2.mimes' => 'Image type should be jpeg or jpg or png or gif or svg',
            'image2.max' => 'Image size should be less than or equal 3MB',
            'image3.image' => 'Please upload an Image for Image ',
            'image3.mimes' => 'Image type should be jpeg or jpg or png or gif or svg',
            'image3.max' => 'Image size should be less than or equal 3MB',
            'image4.image' => 'Please upload an Image for Image ',
            'image4.mimes' => 'Image type should be jpeg or jpg or png or gif or svg',
            'image4.max' => 'Image size should be less than or equal 3MB',
            'image5.image' => 'Please upload an Image for Image ',
            'image5.mimes' => 'Image type should be jpeg or jpg or png or gif or svg',
            'image5.max' => 'Image size should be less than or equal 3MB',
        ];

$this->validate($req, $rules, $msg);

请你告诉我是否有更好的方法来做到这一点?:)

标签: laravellaravel-8laravel-validation

解决方案


使用数组而不是给文件命名

多个文件的 Laravel 验证规则。

$rule = ['image.*' => 'required|mimes:jpeg,png,jpg,gif,svg|max:3072'];
$msg = ['image.*.image' => 'Please upload an Image for Image ',
        'image.*.mimes' => 'Image type should be jpeg or jpg or png or gif or svg',
        'image.*.max' => 'Image size should be less than or equal 3MB'];

推荐阅读