Laravel 请求验证

Laravel Request validation

希望大家帮帮我

我有以下格式的文件输入:

Select images: <input type="file" name="images[][image]" multiple>
Select videos: <input type="file" name="videos[][video]" multiple>

而我的目标是在没有介绍视频的情况下强制用户上传图片。可能性:

我想避免的事情:

但我对需要在我的控制器中使用的验证感到困惑。这是我目前拥有的:

$this->validate($request, [
    'images' => 'required_without_all:videos.*.video',
    'images.*.image' => 'image',
    'videos.*.video' => 'mimetypes:video/avi,video/mpeg,video/quicktime,video/mp4'
]);

但它不起作用。我也试过(没有成功):

$this->validate($request, [
    'images.*.image' => 'image|required_without_all:videos.*.video',
    'videos.*.video' => 'mimetypes:video/avi,video/mpeg,video/quicktime,video/mp4'
]);

如何使用 Laravel 的验证实现我想要的?

非常感谢你。

您有二维输入数组。 required_without_all 是当所有其他字段都不存在时存在一个字段的验证规则。在您的情况下,您有两个输入字段,每个字段都有多个文件上传。

因此,您需要做的是使用 required_without 验证来切换您的案例。试试这个,可能对你有帮助。

$this->validate($request,[
    'images.*.*' => 'required_without:videos.*.*',
    'videos.*.*' => 'required_without:images.*.*',
]);

这将在没有上传图像时检查图像是否存在,同样,在没有上传图像时将检查视频是否存在。

我最终这样做是为了解决问题:

$this->validate($request, [
    'images' => 'required_without_all:videos',
    'images.*.image' => 'image',
    'videos.*.video' => 'mimetypes:video/avi,video/mpeg,video/quicktime,video/mp4'
]);