我正在尝试创建待办事项列表,其中显示了其他字段值的更新,但是对于图像,该值是从文件夹中读取的,但不会显示在输入字段中。
一切正常,否则会出现此问题。
这将显示图像名称<?php echo $task->img; ?>
我使用dd("$task->img");
来检查值。
edit.blade.php
<label for="title">Task Title</label>
<input type="text" value="{{$task->title}}" class="form-control" id="taskTitle" name="title" >
</div>
<div class="form-group col-6">
<label for="description">Task Description</label>
<input type="text" value="{{$task->description}}" class="form-control" id="taskDescription" name="description" >
</div>
<div class="form-group col-6">
<label for="img">Task Image</label>
<input type="file" value="{!! $task->img !!}" class="form-control" id="taskImg" name="img" >
</div>
taskcontroller.php
public function update(Request $request, Task $task)
{
// dd("$task");
//Validate
$request->validate([
'title' => 'required|min:3',
'description' => 'required',
'img' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$task->title = $request->title;
$task->description = $request->description;
if($request->hasFile('img')) {
$file = $request->file('img');
$newVar = strtotime(date('d-m-Y h:i:s'));
$extension = $file->getClientOriginalExtension(); // getting image extension
$filename = $newVar.'.'.$extension;
$file->move('task',$filename);
$task->img = $filename;
}
$task->update();
$request->session()->flash('message', 'Successfully modified the task!');
return redirect()->route('tasks.index');
}```
答案 0 :(得分:0)
将文件添加为默认值不适用于输入字段。 您可能想要在输入字段上方添加一个额外的div,例如:
<div>
<p>Current image</p>
<img src="{!! asset($task->img) !!}">
<p>Upload new image:</p>
<div class="form-group col-6">
<label for="img">Task Image</label>
<input type="file" class="form-control" id="taskImg" name="img" >
</div>
</div>
在控制器中,如果已上传新图像,则应删除旧图像。我还添加了asset()助手。但是您应该使用文件的位置,因为在控制器中您似乎没有将其存储在文件系统磁盘上。
PS:您还应该阅读以下内容以简化上传代码:
https://laravel.com/docs/5.8/filesystem#storing-files 例如,这将替换if语句之间的所有这些行
$path = $request->file('img')->store('images');
$task->img = $path;