我希望帖子能够有多个图像,所以我有这些验证规则:
class StorePostRequest extends FormRequest
{
public function rules(): array
{
return [
'title' => ['required', 'min:3', 'max:50'],
'caption' => ['required', 'string'],
'images.*' => ['nullable', 'image', 'mimes:jpeg,png,jpg', 'max:1024']
];
}
}
但由于某种原因,当用户发送图像文件以外的文件时,不会引发验证错误:
这是我的 PostController 存储方法:
public function store(StorePostRequest $request)
{
$post = new Post($request->safe()->except('images'));
$post->user()->associate(auth()->user());
$post->save();
if ($request->hasFile('images')) {
$post->addAllMediaFromRequest()->each(fn($image) => $image->toMediaCollection('posts_imgs'));
}
return response()->json([
'message' => 'Post has been created successfully.',
'post' => new PostResource($post)
]);
}
有没有办法确保在
images
键下发送的所有数据都是图像或空?
我会将您的规则更改为:
'images' => ['nullable', 'array'],
'images.*' => ['file', 'image', 'mimes:jpeg,png,jpg', 'max:1024'],
这将允许没有图像的空数组或空数组,但会阻止数组中出现任何空值或非图像