من در فرم خودم یه multiple
دارم و می خواهم چند تصاویر را آپلود کنم اما با خطا مواجه میشم خطا هم هیچ وقت ندیدم برای اولین بار است.
strncmp() expects parameter 1 to be string array given
My blade
<form action="{{ route('design-studios.store') }}" method="post" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label for="title">Title</label>
<input type="text" class="form-control" id="title" name="title" value="{{ old('title') }}">
</div>
//......
<div class="form-group">
<fieldset class="border p-3">
<legend>Slideshow</legend>
<div class="form-group">
<label for="sliders">Image</label>
<input id="sliders" name="sliders[]" type="file" multiple class="form-control">
</div>
</fieldset>
</div>
</form>
My Controller
public function store(Request $request)
{
$design_studio = new DesignStudio;
$design_studio->user_id = 1;
$design_studio->title = $request->title;
$design_studio->lang = $request->lang;
$design_studio->body = $request->body;
if($request->has('image')) {
$image = $request->file('image');
$filename = $image->getClientOriginalName();
$image->move(public_path('images/design-studio'), $filename);
$design_studio->image = $request->file('image')->getClientOriginalName();
}
if ($sliders = $request->file('sliders')) {
foreach ($sliders as $slider) {
$filename = $slider->getClientOriginalName();
$slider->move(public_path('images/design-studio'), $filename);
$design_studio->sliders = $slider->getClientOriginalName();
}
}
$design_studio->save();
$design_studio->categories()->attach($request->category);
return redirect()->route('design-studios.index');
}
My Model
protected $casts = [
'sliders' => array()
];
این هم موقع dd گرفتن بعد از حلقه
foreach ($sliders as $slider) {
dd($slider);
@oxbir
مشکل رو پیدا کردم.
شما در خط زیر به ازای هر حلقه داری اسم جدید رو داخل متغیر میریزی!
$design_studio->sliders = $slider->getClientOriginalName();
به جای این کار یک آرایه بساز و هر بار که عکس آپلود میشه اسمش رو پوش کن داخل آرایه بعد به جای اون خط، در بیرون حلقه آرایه رو پاس بده.
البته دقت کنید برای این کار باید نوع داده اون ستون روی json باشه و آرایه رو هم با استفاده از json_encode ذخیره کنید.
سلام ببینید شما از base64 استفاده نمیکنید و دارید مستقیم فایل رو به صورت باینری میفرستید و برای اینکار باید از کتابخانه و ماژول دیگری مخصوص این کار استفاده کنید من php کار نکردم ولی قطعا ماژولی برای این کار داره. یه سرچ بکنید اگر هم دارید به صورت base64 پست میکنید که باید base64 رو تبدیل بکنید به فایل که این از امکانات داخلی خوده php هم هست
@oxbir
سلام.
پیشنهاد میکنم خط به خط داخل کنترلر رو با استفاده از dd بررسی کنید تا دقیق مشخص بشه از کدوم قسمت اررور داره میاد.
@oxbir
مشکل رو پیدا کردم.
شما در خط زیر به ازای هر حلقه داری اسم جدید رو داخل متغیر میریزی!
$design_studio->sliders = $slider->getClientOriginalName();
به جای این کار یک آرایه بساز و هر بار که عکس آپلود میشه اسمش رو پوش کن داخل آرایه بعد به جای اون خط، در بیرون حلقه آرایه رو پاس بده.
البته دقت کنید برای این کار باید نوع داده اون ستون روی json باشه و آرایه رو هم با استفاده از json_encode ذخیره کنید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟