Существующее изображение не отображается в форме редактирования для обновления в larvel (5.8) - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь создать список задач, в котором отображается обновление формы другого значения поля, но для изображения значение читается из папки, но не отображается в поле ввода.

все работает нормально, кроме этой проблемы.

Это отображает имя изображения <?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');
    }```

1 Ответ

0 голосов
/ 18 июня 2019

Добавление файла в качестве значения по умолчанию не будет работать для поля ввода.Возможно, вы захотите добавить дополнительный 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>

В вашем контроллере вы должны затем удалить старое изображение, если новое было загружено.Я также добавил актив (), помощник.Но вы должны использовать местоположение вашего файла, потому что в вашем контроллере вы, похоже, не храните его на диске с файловой системой.

PS: Вы также должны прочитать это, чтобы упростить код загрузки:

https://laravel.com/docs/5.8/filesystem#storing-files Например, это заменяет все эти строки между оператором if

$path = $request->file('img')->store('images');
$task->img = $path;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...