我希望你们能帮帮我。
我有以下形式输入这些文件:
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验证实现我想要的效果?
非常感谢您的进步。
答案 0 :(得分:0)
您有2维输入数组。 required_without_all
是一个字段存在的验证规则,当所有其他字段都不存在时。在您的情况下,您有两个输入字段,每个字段都有多个文件上载。
因此,您需要做的是使用required_without
验证切换案例。试试这个,可以帮助你。
$this->validate($request,[
'images.*.*' => 'required_without:videos.*.*',
'videos.*.*' => 'required_without:images.*.*',
]);
这将在没有上传图像时检查图像的存在,同样地,在没有上传图像时将检查视频是否存在。
答案 1 :(得分:0)
我最终这样做是为了解决这个问题:
$this->validate($request, [
'images' => 'required_without_all:videos',
'images.*.image' => 'image',
'videos.*.video' => 'mimetypes:video/avi,video/mpeg,video/quicktime,video/mp4'
]);