Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果单击laravel中的确认javascript框,如何从文件夹和表中删除图像_Php_Laravel_Laravel 5_Eloquent - Fatal编程技术网

Php 如果单击laravel中的确认javascript框,如何从文件夹和表中删除图像

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))

我在拉雷维尔5.4进行积垢处理。我正在从数据库和存储中删除图像。我这样做了,但它只从数据库中删除图像名称。并且不要从存储文件夹中删除

我还做了一件事,如果我点击删除按钮,就会显示一个确认框。如果单击是,则删除,否则不删除。但它也不起作用

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@cloudsoft
public\u path()
为我们提供完整的文件路径。但是
asset()
为我们提供文件url。没有错误。它已成功删除。但是我需要一个jquery的确认框(在home.blade.php中编写)。Jquery不工作。(1/1)VerifyCsrfToken.php第68行中的令牌不匹配异常