这是我的控制器:
public function update(Request $request, $id)
{
$slider = Slider::findOrFail($id);
//$input = $request->all();
// uploads image
if ($request->hasFile('image'))
{
$file = $request->file('image');
$imagename = 'dpgomma_' . time() . '-' . $file->getClientOriginalName();
$file->move(public_path().'/uploads/', $imagename);
$input['image'] = $imagename;
}
$slider->save($request->all());
return redirect('/admin/sliders')->with('message', 'Slider Modificata');
}
我的路线:
Route::get('/admin/sliders/edit/{id}', 'SliderController@edit');
Route::put('/admin/sliders/update/{id}',['as' => 'sliders.update', 'uses' => 'SliderController@update']);
我的观点:
{!! Form::model($slider, [
'method' => 'put',
'route' => ['sliders.update', $slider->id],
'files' => true
]) !!}
{!! Form::token() !!}
<div class="form-group">
{!! Form::label('title', 'Title:', ['class' => 'control-label']) !!}
{!! Form::text('title', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('image', 'image:', ['class' => 'control-label']) !!}
{!! Form::file('image', null, ['class' => 'form-control']) !!}
</div>
{!! Form::submit('Update Task', ['class' => 'btn btn-primary']) !!}
{!! Form::close() !!}
答案 0 :(得分:1)
您必须在表单开头添加'files' => true
选项。
此外,您可以使用$request->hasFile('image')
和$request->file('image')
代替Input
外观。
我建议你看看this,没有理由不去工作。
答案 1 :(得分:1)
您的数据库未更新映像名称,因为映像名称包含在input['image']
中,并且您使用$request
服务容器更新数据库。因此,您的图像的原始名称通过$ request服务容器,如
$request = [
'other' => 'other',
'image' => 'you_original_image_name',
'more_other' => 'more_other'
]
要使用所需文件名更新数据库,请更改此行
$input['image'] = $imagename;
要
$request['image'] = $imagename;