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'
]);
希望大家帮帮我
我有以下格式的文件输入:
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'
]);