значение по умолчанию для формы ввода файла при обновлении изображения в laravel 5.8 - PullRequest
0 голосов
/ 16 февраля 2020

Я использую Laravel 5.8, я пытаюсь обновить данные в laravel, данные содержат изображения, когда обновление формы не получило новое изображение, laravel отображает ошибку, что изображение пустое, могу ли я сделать старое изображение значением по умолчанию для ввода файла?

это мой контроллер

public function UploadEdit(Request $request, Books $book,$id_book){
    $book = Books::find($id_book);
    global $old_image;
    $old_image = public_path("img/books/". $book->image);
    if($request->hasFile('image')){
        if (File::exists($old_image)) { 
            unlink($old image);
        }

        $image = $request->file('image');
        $image_name = time()."_".$image->getClientOriginalName();
        $image->move('img/books',$image_name);
        $book->image=$image_name;
    }else{
        $book->image = $old_image;
    }

    DB::table('books')->where('id_book',$request->id_book,$image_name)->update([
        'title' => $request->title,
        'image' => $request->image = $image_name,
        'category' => $request->category,
        'description' => $request->description
    ]);



    return redirect('/books');
}

это файл ввода из моей формы:

<div class="form-group">
    <label for="image">Image</label>
    <input type="file" class="form-control-file" id="image" name="image" id="image" enctype="multipart/form-data" value="{{ asset("img/books/$book->image") }}">
    <img src="{{ asset("img/books/$book->image") }}" width="150">
</div>

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

Ответы [ 2 ]

0 голосов
/ 16 февраля 2020

Вам не нужно получать старый файл. Если вы не измените его в БД и в хранилище при выполнении обновления, оно все равно останется или останется нулевым, если оно было.

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

$data = [
    'title' => $request->title,
    'category' => $request->category,
    'description' => $request->description
];

if($request->hasFile('image')){
    $image = $request->file('image');
    $image_name = time()."_".$image->getClientOriginalName();
    $image->move('img/books',$image_name);
    $data = array_merge($data, ['image' => $image_name]); // here you merge the image name on the data
}

DB::table('books')->where('id_book',$request->id_book)->update($data);
0 голосов
/ 16 февраля 2020

Нельзя установить значение по умолчанию для <input type="file"/>. Лучше всего, когда вы обновляете таблицу книг, проверьте, есть ли в изображении изображение, если его нет, тогда вы можете пропустить обновление изображения или переназначить предыдущее * 1002. *

вот как это выглядит

DB::table('books')->where('id_book',$request->id_book,$image_name)->update([
    'title' => $request->title,
    'image' => $request->hasFile('image') ? $image_name : $book->image,
    'category' => $request->category,
    'description' => $request->description
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...