为什么会这样?这是我所有帐户的索引列表。我想删除该category.destroy路由的特定类别,但它是
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>
 <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
CategoryController.php
public function destroy($id){
$category = Category::findOrFail($id);
$category->delete();
Session::flash('flash_message', 'Task successfully deleted!');
return redirect()->route('category.index');
}
相反,它只显示该类别的视图特定条目。这不是删除或其他东西
答案 0 :(得分:2)
要访问您的销毁路由,您必须使用DELETE HTTP请求动词。 HTML链接仅允许GET请求。
您应该将HTML链接更改为spoofs DELETE方法的HTML表单,或者使用restfulizer.js之类的内容来自动将删除链接转换为删除表单。
正如已经建议的那样,您还可以为删除功能创建GET路由,但这可能会对此产生影响。 GET和HEAD请求通常应被视为“只读”请求,不应修改任何数据。 POST,PUT,PATCH和DELETE请求通常被认为是“写”请求。网络蜘蛛可能会抓取您的删除链接并最终删除所有数据,或者网络浏览器可能会预先获取页面上的所有GET请求,因此即使没有人点击删除按钮,也会访问删除链接。当您开始允许GET请求修改数据时,可能会发生许多潜在的令人讨厌的事情。 this answer中有一些很好的信息。
答案 1 :(得分:1)
尝试这条路线:
Route::get('category/{category}/destroy',[
'uses'=>'CategoryController@destroy',
'as' => 'category.destroy'
]);