Php Laravel销毁选项不删除

Php Laravel销毁选项不删除,php,laravel,laravel-5,laravel-routing,Php,Laravel,Laravel 5,Laravel Routing,为什么会发生这种情况?这是我所有帐户的索引列表。我只想按类别删除一个特定类别。销毁路由,但它是 index.blade.php @extends('layouts.master') @section('title','All Categories') @section('contents') <div class="row"> <div class="col-md-8 col-sm-4 col-md-offset-2"> <div class

为什么会发生这种情况?这是我所有帐户的索引列表。我只想按类别删除一个特定类别。销毁路由,但它是

index.blade.php

@extends('layouts.master')
@section('title','All Categories')
@section('contents')
<div class="row">
    <div class="col-md-8 col-sm-4 col-md-offset-2">
        <div class="panel panel-default">
            <div class="panel-heading">All Categories</div> 
            <div class="panel-body">
                <article>
                    <div class="table-responsive-vertical shadow-z-1">
                        <!-- Table starts here -->
                        <table id="table" class="table table-hover table-mc-light-blue">
                            <thead>
                                <tr>
                                    <th>ID No</th>
                                    <th>Category</th>
                                    <th>Edit/Delete</th>
                                    <th>Status</th>
                                </tr>
                            </thead>
                            @foreach($categories as $category)
                            <tbody>
                                <tr>
                                    <td data-title="ID">{{$category->id}}</td>
                                    <td data-title="Name">{{$category->name}}</td>
                                    <td><a href="{{ route('category.edit',$category->id)  }}" class="btn btn-primary btn-sm pull-left">Edit</a>
                                        &nbsp<a href="{{ route('category.destroy', $category->id)  }}" class="btn btn-danger btn-sm">Delete</a>
                                    </td>

                                </tr>         
                            </tbody>
                            @endforeach
                        </table>
                    </div>
                </article>

            </div>
        </div>
    </div>
</div>
@endsection
@section('js') 
{!!Html::script('assets/js/jquery.min.js')!!} 
{!!Html::script('assets/js/bootstrap.min.js') !!}
<script>
    $('#flash-overlay-modal').modal();
</script>

<script>
    $('div.alert').not('.alert-important').delay(3000).fadeOut(350);
</script>
@endsection
相反,它只显示类别的视图特定条目。它不是在删除或执行其他操作

尝试以下路线:

Route::get('category/{category}/destroy',[
  'uses'=>'CategoryController@destroy',
  'as' => 'category.destroy'
]);

要访问销毁路由,必须使用删除HTTP请求谓词。HTML链接只允许GET请求

您应该将HTML链接更改为使用DELETE方法的HTML表单,或者研究使用类似的方法将删除链接自动转换为删除表单


正如所建议的那样,您还可以为delete功能创建一个GET路由,但这可能会带来潜在的后果。GET和HEAD请求通常应视为“只读”请求,不应修改任何数据。POST、PUT、PATCH和DELETE请求通常被认为是“写”请求。网络蜘蛛可能会抓取您的删除链接并最终删除您的所有数据,或者网络浏览器可能会预取页面上的所有GET请求,因此即使没有人单击“删除”按钮,也会访问删除链接。当您开始允许GET请求修改数据时,可能会发生许多潜在的令人讨厌的事情。在。

@A.Sand中有一些很好的信息,虽然这可能有效,但GET请求应该被视为“只读”。您可能不想开始允许GET请求修改数据。您最好访问由资源定义创建的正确删除路由。@patricus是的,这是不安全的,但如果他像管理员用户一样通过身份验证来保护他的请求,是否存在相同的漏洞?@maudev如果链接在身份验证之后,您不必担心网络爬虫,但是身份验证墙无法阻止诸如预取或CSRF攻击等其他问题(默认情况下,Laravel使用令牌保护“写”动词(POST、DELETE等);保护特定GET请求需要额外的工作)。@patricus谢谢你提供的信息,我会记住。如果你链接到路由,那么你实际上不会访问该路由,由于销毁路由不是一个
GET
,而是一个
DELETE
,因此您实际上应该为销毁路由创建一个小表单,并使用按钮触发实际路由的表单操作。
Route::get('category/{category}/destroy',[
  'uses'=>'CategoryController@destroy',
  'as' => 'category.destroy'
]);