laravel - 在 laravel 上编辑数据时无法更新图像
问题描述
当我创建新数据时没有问题。一切正常,包括上传图片。我的图像插入到 public/image 目录。但是当我尝试编辑或更新时,我遇到了问题。我应该插入公共/图像的图像不适用于更新功能。
控制器在下面
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'sequence' => 'required',
'image' => 'required|image|max:2048',
'link' => 'required',
'status' => 'required',
]);
$image = $request->file('image');
$new_name = $request->name .rand(). '.' . $image->getClientOriginalExtension();
$image->move(public_path('images'), $new_name);
$form_data = array(
'name' => $request->name,
'sequence' => $request->sequence,
'image' => $new_name,
'link' => $request->link,
'status' => $request->status,
);
Banner::create($form_data);
return redirect()->route('banner.index');
}
public function update(Request $request, Banner $banner)
{
$image_name = $request->hidden_image;
$image = $request->file('image');
if($image != ''){
$request->validate([
'name' => 'required',
'sequence' => 'required',
'image' => 'image|max:2048',
'link' => 'required',
'status' => 'required',
]);
$image_name = $request->name .rand(). '.' . $image->getClientOriginalExtension();
$image->move(public_path('images'), $image_name);
}
else{
$request->validate([
'name' => 'required',
'sequence' => 'required',
'link' => 'required',
'status' => 'required',
]);
}
$form_data = array(
'name' => $request->name,
'sequence' => $request->sequence,
'image' => $image_name,
'link' => $request->link,
'status' => $request->status,
);
Banner::whereId($banner)->update($form_data);
return redirect()->route('banner.index');
}
我的视图代码如下
<form action="{{ route('banner.update',$banner->id) }}" method="POST">
@csrf
@method('PUT')
<div class="row" style="margin-top: 10px">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Name:</strong>
<input type="text" name="name" value="{{ $banner->name }}" class="form-control" placeholder="Name">
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Sequence</strong>
<input type="number" name="sequence" value="{{ $banner->sequence }}" class="form-control" placeholder="Sequence">
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Image</strong>
<div class="col-md-8">
<img src="{{ URL::to('/') }}/images/{{ $banner->image }}" class="img-thumbnail" width="200" />
</div>
<div class="col-md-8">
<input type="file" name="image" />
<input type="text" name="hidden_image" value="{{ $banner->image }}" />
</div>
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Link</strong>
<input type="text" name="link" value="{{ $banner->link }}" class="form-control" placeholder="Link">
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Status</strong>
<input type="text" name="status" value="{{ $banner->status }}" class="form-control" placeholder="Status">
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12 text-center">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
解决方案
您的表单缺少enctype
属性,因此没有文件与表单一起传递。添加该属性,一切都会起作用。
<form action="{{ route('banner.update',$banner->id) }}" method="POST" enctype="multipart/form-data">
推荐阅读
- php - CakePHP 在 Null 上调用成员函数 query()
- python - 如何找到过滤数据的标准偏差(groupby)
- ios - 对 FetchedRC 进行分区(单元格的自定义顺序)
- java - Builder 模式中的嵌套泛型类型:如何实现和避免类型擦除(ascii 树、图片)
- reactjs - React 组件中的 transitionstart 事件
- c - EXC_BAD_ACCESS 尝试访问 OS X 钥匙串时
- spring - JdbcCursorItemReader 是否必须关闭连接?
- azure-machine-learning-service - 本机日志记录模块未打印到 AzureML 中的标准输出
- python - 如何用列表理解重写这个函数?
- python - Mongo ISO 日期格式在 pymongo 中不起作用