همانطور که احتمالا میدانید برای ارسال چند پارامتر به وسیله ی یک فیلد(input) بهتره name
رو به صورت جمع و باید با علامت آرایه نوشت
مثال:
<input type="file" name="images[]" class="custom-file-input" id="customFile" multiple>
خب نکته اصلی اینجاست که توی کنترلر برای ولیدیشن از همین نام استفاده کنید ولیدیشن به شما ارور میده و اجازه عبور نمیده.
- کد اشتباه:
if ($request->file('images')) { $this->validate($request,[ 'images' => 'max:10240000,mimes:jpg,bmp,png,jpeg', ]); $files = $request->file('images'); foreach($files as $file){ $item->uploadeItemPhoto($file, $item); }
نکته این مقاله اینجاست که لاراول ولیدیشن در زمان چک کردن پارامتر های درون آرایه اون ها رو تک تک و به صورت جدا چک میکنه در نتیجه اسم
input
هم درون ولیدیشن از حالت جمع (images) به حالت مفرد (image) تغییر پیدا میکنه مثال :if ($request->file('images')) { $files = $request->file('images'); foreach($files as $file){ $this->validate($request,[ 'image' => 'max:10240000|mimes:jpg,bmp,png,jpeg', ]); $item->uploadeItemPhoto($file, $item); } }
با انجام این امر دیگه ولیدیشن مشکل ساز نمیشه براتون