0

我希望你们能帮助我。

我有这些文件输入的形式:

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 的验证来实现我想要的?

非常感谢您。

4

2 回答 2

0

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

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

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

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

于 2017-06-19T01:58:56.777 回答
0

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

$this->validate($request, [
    'images' => 'required_without_all:videos',
    'images.*.image' => 'image',
    'videos.*.video' => 'mimetypes:video/avi,video/mpeg,video/quicktime,video/mp4'
]);
于 2017-06-19T12:32:13.873 回答