Php 如果单击laravel中的确认javascript框,如何从文件夹和表中删除图像
我在拉雷维尔5.4进行积垢处理。我正在从数据库和存储中删除图像。我这样做了,但它只从数据库中删除图像名称。并且不要从存储文件夹中删除 我还做了一件事,如果我点击删除按钮,就会显示一个确认框。如果单击是,则删除,否则不删除。但它也不起作用Php 如果单击laravel中的确认javascript框,如何从文件夹和表中删除图像,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我在拉雷维尔5.4进行积垢处理。我正在从数据库和存储中删除图像。我这样做了,但它只从数据库中删除图像名称。并且不要从存储文件夹中删除 我还做了一件事,如果我点击删除按钮,就会显示一个确认框。如果单击是,则删除,否则不删除。但它也不起作用 public function destroy($id) { $todos = todo::find($id); if(\File::exists(public_path('storage/images/'.$todos->image))
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');
}
我的web.php是:
Route::resource('todo','todocontroller');
<?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');
}
}
@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
我的todocontroller.php是:
Route::resource('todo','todocontroller');
<?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');
}
}
@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
似乎您给了图像目录错误的路径。这就是为什么删除图像不起作用
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
@extends('layout.app'))
@第节(“正文”)
@如果(session()->has('message'))
{{session()->get('message')}
@恩迪夫
待办事项清单
@foreach($todo作为$todo)
-
图像)}}“style=”高度:100px;宽度:100px;">
{{$todo->body}
{{csrf_field()}}
{{method_field('DELETE')}
删去
@endforeach
{{$todos->links()}
@端部
您可以使用函数删除文件
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');
}
希望这会有所帮助。谢谢您的回复。但是错误,(1/1)BadMethodCallException方法unlink不存在。在Macroable.php第74行中,我的第二个问题是:当我单击delete时,它应该是确认javascript delete或not。我单击delete时,它应该是delete。但脚本也不工作。它正在工作。但我不明白为什么不在path中添加public。因为在img中标记我必须写图像)}}“>我的第二个问题是:当我点击删除时,它应该是确认javascript是否删除。我点击删除,然后它应该被删除。但脚本也不是working@cloudsoftpublic\u path()
为我们提供完整的文件路径。但是asset()
为我们提供文件url。没有错误。它已成功删除。但是我需要一个jquery的确认框(在home.blade.php中编写)。Jquery不工作。(1/1)VerifyCsrfToken.php第68行中的令牌不匹配异常