как удалить изображения из папки, а также из таблицы, если нажать на кнопку подтверждения на поле JavaScript в Laravel - PullRequest
0 голосов
/ 13 сентября 2018

Я делаю операцию CRUD в laravel 5.4. Я удаляю изображение из базы данных и хранилища. Я сделал это, но он удаляет имя изображения только из базы данных. И не удаляйте из папки хранения.

И я делаю еще одну вещь: если я нажму на кнопку удаления, то должно появиться одно окно подтверждения. Если нажать «да», то удалить, а не удалить. Но это также не работает.

Мой web.php:

Route::resource('todo','todocontroller');

Мой todocontroller.php:

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\todo;

class todocontroller extends Controller
{

public function index()
{
    $todos = todo::paginate('3');
    return view('todo.home',compact('todos'));
}

public function destroy($id)
{
    $todos = todo::find($id);

    if(\File::exists(public_path('public/storage/images/'.$todos->image))){
    \File::delete(public_path('public/storage/images/'.$todos->image));
    }

    $todos->delete();
    session()->flash('message','Deleted Successful');
    return redirect('todo');
}
}

Мой home.blade.php:

@extends('layout.app')

@section('body')
<br>
@if(session()->has('message'))
{{session()->get('message')}}
@endif

 <div class="col-lg-4 col-lg-offset-4"><a href="todo/create" class="btn btn-info">Add new</a>
    <h1>Todo Lists</h1>
    <ul class="list-group">
        @foreach($todos as $todo)
  <li class="list-group-item d-flex justify-content-between align-items-center">
<span><img src="{{asset('public/storage/images/'.$todo->image)}}" style="height: 100px;width: 100px;"></span>

<a href="{{'todo/'.$todo->id}}">{{$todo->title}}</a>
{{$todo->body}}

<span>
  <form class="delete" action="{{'todo/'.$todo->id}}" method="POST">
    {{csrf_field()}}
    {{method_field('DELETE')}}
<button type="submit">Delete</button>
  </form>
 </span>
</li>
@endforeach

{{$todos->links()}}
</ul>

</div>
<script>
$(".delete").on("submit", function(){
    return confirm("Do you want to delete this item?");
});
</script>

@endsection

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Вы можете использовать функцию unlink для удаления файла.

public function destroy($id)
{
    $todos = todo::find($id);

    if(\File::exists(public_path('storage/images/'.$todos->image))){
        unlink(public_path('storage/images/'.$todos->image));
    }

    $todos->delete();
    session()->flash('message','Deleted Successful');
    return redirect('todo');
}  

надеюсь, это поможет.

0 голосов
/ 13 сентября 2018

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

public function destroy($id)
{
    $todos = todo::find($id);

    if(\File::exists(public_path('storage/images/'.$todos->image))){
    \File::delete(public_path('storage/images/'.$todos->image));
    }

    $todos->delete();
    session()->flash('message','Deleted Successful');
    return redirect('todo');
}

Я думаю, что это сработает.

Отредактировано home.blade.php Файл

@extends('layout.app')

@section('body')
<br>
@if(session()->has('message'))
    {{session()->get('message')}}
@endif

 <div class="col-lg-4 col-lg-offset-4"><a href="todo/create" class="btn btn-info">Add new</a>
    <h1>Todo Lists</h1>
    <ul class="list-group">
        @foreach($todos as $todo)
            <li class="list-group-item d-flex justify-content-between align-items-center">
                <span>
                    <img src="{{asset('public/storage/images/'.$todo->image)}}" style="height: 100px;width: 100px;">
                </span>
                <a href="{{'todo/'.$todo->id}}">{{$todo->title}}</a>
                {{$todo->body}}

                <span>
                    <form class="delete" action="{{'todo/'.$todo->id}}" method="POST" onsubmit="return confirm('Do you really want to submit the form?');">
                        {{csrf_field()}}
                        {{method_field('DELETE')}}
                        <button type="submit">Delete</button>
                    </form>
                </span>
            </li>
        @endforeach
        {{$todos->links()}}
    </ul>
</div>

@endsection
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...