$('#add_name').serialize() using this you can't get image object in post using ajax.
Вы должны использовать formdata
var form = $('form')[0];
var formData = new FormData(form);
передать данные формы как данные в вашем вызове ajax
Изменения ниже
Ваш взгляд
{!! Form::open(['action'=>'Admin\PromotionsController@store', 'method' => 'POST','enctype'=>'multipart/form-data', 'name' => 'add_name', 'id' => 'add_name']) !!}
<div class="form-group">
<div class="table-responsive">
<table class="table table-bordered" id="dynamic_field">
<tr>
<td> {{Form::file('promotion_image[]')}}</td>
<td>{{ Form::button('Add', ['class' => 'btn btn-success', 'id'=>'add','name'=>'add']) }}</td>
</tr>
</table>
{{Form::submit('submit', ['class'=>'btn btn-primary'])}}
</div>
</div>
{!! Form::close() !!}
Для функции контроллера вы должны использовать foreach
Если вы используете последнюю версию Laravel
$this->validate($request, [
'promotion_image' => 'required'
]);
if ($request->has('promotion_image'))
{
$promotion_images = [];
foreach ($request->file('promotion_image') as $key => $file)
{
$image = \Storage::put('promotion_image', $file); // your image path
if ($image)
array_push($promotion_images, $image);
}
$fileNameToStore = serialize($promotion_images);
}
else
{
$fileNameToStore='noimage.jpg';
}
$promotion = new Promotion;
$promotion->promotion_image = $fileNameToStore;
$promotion->save();
Или, согласно вашей логике
$this->validate($request, [
'promotion_image' => 'required'
]);
if ($request->has('promotion_image'))
{
//Handle File Upload
$promotion_images = [];
foreach ($request->file('promotion_image') as $key => $file)
{
// Get FileName
$filenameWithExt = $file->getClientOriginalName();
//Get just filename
$filename = pathinfo( $filenameWithExt, PATHINFO_FILENAME);
//Get just extension
$extension = $file->getClientOriginalExtension();
//Filename to Store
$fileNameToStore = $filename.'_'.time().'.'.$extension;
//Upload Image
$path = $file->storeAs('public/promotion_images',$fileNameToStore);
array_push($promotion_images, $fileNameToStore);
}
$fileNameToStore = serialize($promotion_images);
}
else
{
$fileNameToStore='noimage.jpg';
}
$promotion = new Promotion;
$promotion->promotion_image = $fileNameToStore;
$promotion->save();
И измените код вашего скрипта ajax
Изменение в способе отправки
$('#submit').click(function(){
var form = $('#add_name')[0];
var formData = new FormData(form);
$.ajax({
url:"name.php",
method:"POST",
data:formData,
success:function(data)
{
alert(data);
$('#add_name')[0].reset();
}
});
});