我有一个名为Services的表,现在该表具有以下内容-
-id -标题 -身体 -图片 sl -时间戳
在管理员中,我为添加,编辑,删除创建了服务页面。
我的问题是edit
和update
一张图像。一个奇怪的问题是,当我将服务表(数据库)中的image
的字段更改为aaaaa
时,什么也没发生。应该发生。因为我将image
的重命名更改为aaaaa
。
web.php
Route::resource('services', 'ServiceController');
ServiceController.php
public function edit(Service $service)
{
return view('Admin.services.edit', compact('service'));
}
public function update(Request $request, Service $service)
{
$service->title = $request->title;
$service->body = $request->body;
if($request->has('image')) {
$image = $request->file('image');
$filename = $image->getClientOriginalName();
$image->move(public_path('images/services'), $filename);
$service->image = $request->file('image')->getClientOriginalName();
}
$service->update();
return redirect()->route('services.index');
}
edit.blade.php
<form class="form-horizontal" action="{{ route('services.update', $service->id) }}" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
{{ method_field('PATCH') }}
@include('Admin.layouts.errors')
<div class="form-group">
<label for="title">عنوان</label>
<input type="text" class="form-control" id="title" name="title" placeholder="عنوان" value="{{ $service->title ? : old('title') }}">
</div>
<div class="form-group">
<label for="body">متن</label>
<textarea class="form-control" rows="10" id="body" name="body" placeholder="متن">{{ $service->body ? : old('body') }}</textarea>
</div>
<div class="form-group">
<label for="images">تصویر</label>
<div class="custom-file">
<input type="file" class="custom-file-input" id="images" name="images">
<label class="custom-file-label" for="images">تصویر محصول</label>
</div>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">ذخیره</button>
</div>
</form>
Service.php
protected $fillable = [
'title',
'body',
'image',
'slug',
];
我什至通过update
方法更改了控制器,如下所示,没有任何反应。
$service->save();
答案 0 :(得分:1)
在html中,您可以:
<input type="file" class="custom-file-input" id="images" name="images">
并在控制器中:$ request-> file('image')。
替换
<input type="file" class="custom-file-input" id="images" name="images">
使用
<input type="file" class="custom-file-input" id="images" name="image">
答案 1 :(得分:1)
我认为在laravel中编辑图像的一种有效方法。 将此添加到控制器顶部
use File;
首先将您的bannerId放入变量
$bannerId = $request->banner_id;
通过find()获取具有该ID的对象。
$bannerData = FrontEndBanner::find($bannerId);
检查文件是否存在,并检查文件是否已存在,然后删除该文件,否则将在imageName变量中插入相同的名称
if ($request->hasFile('banner_image')){
$image_path = public_path("/uploads/resource/".$bannerData->banner_name);
if (File::exists($image_path)) {
File::delete($image_path);
}
$bannerImage = $request->file('banner_image');
$imgName = $bannerImage->getClientOriginalName();
$destinationPath = public_path('/uploads/resource/');
$bannerImage->move($destinationPath, $imgName);
} else {
$imgName = $bannerData->banner_name;
}
$bannerData->title = $request->banner_title;
$bannerData->banner_name = $imgName;
$bannerData->save();
如果有人遇到问题,请发表评论