【发布时间】:2018-01-09 18:36:13
【问题描述】:
所以我有这个编辑表单,它包含建筑物名称和图像的字段。
问题是当我尝试编辑并单击更新建筑物名称时,它显示此错误:
在 null 上调用成员函数 getClientOriginalExtension()
但是,当我更改图像并单击更新时,只要您不更改建筑物名称,它就可以正常工作。
代码如下:
editbuilding.blade.php
{!! Form::open(array('route' => ['editbuilding',$id], 'class' => 'form' , 'files'=>'true')) !!}
<div class="container">
<div class="form-group">
{!! Form::label('Building Name') !!}
{!! Form::text('buildingname', $building->name, array('required',
'class'=>'form-control',
'placeholder'=>'Building Name')) !!}
</div>
<div class="form-group">
{!! Form::label('Building Name') !!}
{!! Form::file('buildingpics',
array('onchange'=>'previewFile()')) !!}
@if ($building->picture)
<br/><img src="{{asset('assets/'.$building->picture)}}" id="previewImg" style="height:300px; width:300px;" alt="">
@else
</br><p>No image found</p>
@endif
</div>
<div class="form-group">
{!! Form::submit('Update',
array('class'=>'btn btn-primary')) !!}
<a href="{{route('index')}}" class="btn btn-default btn-md">Back</a>
</div>
</div>
{!! Form::close() !!}
<script type="text/javascript">
function previewFile() {
var preview = document.querySelector('#previewImg');
var file = document.querySelector('input[type=file]').files[0];
var reader = new FileReader();
reader.addEventListener("load", function () {
preview.src = reader.result;
}, false);
if (file) {
reader.readAsDataURL(file);
}
}
</script>
@endsection
@section('scripts')
@endsection
BuildingController.php
public function saveBuilding(Request $request)
{
$file = $request->file('buildingpics');
$building = new Building();
$building->name = $request->buildingname;
$building->picture = $building->name.'.'.$file->getClientOriginalExtension();
$file->move('assets',$building->name.'.'.$file->getClientOriginalExtension());
$building->save();
\Session::flash('building_flash', 'Created successfully!');
return redirect('/');
}
public function edit($id)
{
$building = Building::find($id);
return view('editbuilding')->withBuilding($building)->with('id',$id);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$building = Building::find($id);
$building->name = $request->buildingname;
$file = $request->file('buildingpics');
$building->picture = $building->name.'.'.$file->getClientOriginalExtension();
// print_r(FCPATH);
// dd($file);
$file->move('assets',$building->name.'.'.$file->getClientOriginalExtension());
$building->update();
\Session::flash('building_flash', 'Updated successfully!');
return redirect()->back();
}
【问题讨论】: