2016-09-10 6 views
1

Зачем это происходит? Это мои индексные списки всех учетных записей. Я хочу просто удалить определенную категорию по этому маршруту category.destroy ноLaravel 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> 
             &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 

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

Если вы делаете ссылку на маршрут, то на самом деле вы не получаете доступ к этому маршруту, потому что маршрут уничтожения не является «GET», это «DELETE», поэтому вы должны создать небольшую форму для маршрута уничтожения и используйте кнопку, чтобы вызвать действие формы на фактический маршрут. –

ответ

1

Try с этим маршрутом:

Route::get('category/{category}/destroy',[ 
    'uses'=>'[email protected]', 
    'as' => 'category.destroy' 
]); 
+0

Большое вам спасибо – d3cypher

+0

@ A.Sand Хотя это может сработать, запросы GET должны быть хотя бы «прочитаны». Вероятно, вы не хотите запускать запросы GET для изменения данных. Вам лучше получить доступ к правильному маршруту DELETE, созданному определением ресурса. – patricus

+0

@patricus Да, это не безопасно, но если он защищает свои запросы посредством аутентификации, как и пользователь admin, такая же уязвимость? – maudev

2

Чтобы получить доступ к уничтожению маршрута, вы должны использовать DELETE глагол запроса HTTP. Ссылки HTML допускают только запросы GET.

Вы должны либо изменить свою HTML-ссылку на HTML-форму, которая spoofs методом DELETE, либо изучить что-то вроде restfulizer.js, которое автоматически преобразует ваши ссылки удаления для удаления форм.

Как было предложено, вы также можете создать маршрут GET для функции удаления, но есть потенциальные последствия для этого. Запросы GET и HEAD обычно следует рассматривать как запросы «только для чтения» и не должны изменять какие-либо данные. Запросы POST, PUT, PATCH и DELETE обычно считаются запросами «писать». Веб-паук может обходить ваши ссылки на удаление и в конечном итоге удалять все ваши данные, или веб-браузер может предварительно загружать все запросы GET на странице, поэтому доступ к ссылке можно получить, даже если никто не нажал кнопку удаления. Есть много потенциальных неприятных вещей, которые могут произойти, когда вы начинаете разрешать GET-запросы изменять данные. Есть некоторая хорошая информация в this answer.