2016-09-30 16 views
3

で既存の記事を削除します。Laravel 5は、私は次のコードで記事を削除しようとしていますdestroyメソッド

ArticlesController:

public function destroy($id) { 
    $article = Article::findOrFail($id); 
    $article->delete(); 

    return redirect('backend/dashboard')->with([ 
    'flash_message' => 'Deleted', 
    'flash_message_important' => false 
    ]); 
} 

ビュー:

@foreach($articles as $key => $article) 
    <tr> 
    <td class="td-actions text-right"> 
     <a href="{{action('[email protected]',$article->id)}}"type="button" rel="tooltip" title="" class="btn btn-info btn-simple btn-xs" data-original-title="Edit Article"> 
     <i class="fa fa-edit"></i> 
     </a> 
     <a href="{{action('[email protected]',$article->id)}}" type="button" rel="tooltip" title="" class="btn btn-danger btn-simple btn-xs" data-original-title="Delete Article"> 
     <i class="fa fa-times"></i> 
     </a> 
    </td> 
    </tr> 
@endforech 

「を削除]をクリックして、記事「ボタン」私は、全く別の見方にリダイレクトされています。 @showメソッドが実行されたようです。

マイルート:

Route::get('backend/articles/archive', '[email protected]'); 
Route::resource('backend/articles', 'ArticlesController'); 
Route::get('backend/dashboard', [ 
    'middleware' => 'auth', 
    'uses' => '[email protected]' 
]); 

私はこの問題を解決するにはどうすればよいですか?

+0

リダイレクトを 'redirect()'のように変更するとどうなりますか? – Neat

+0

質問に関連するルートを追加できますか? –

+0

redirect()は何も変わりません。同じ結果 – Mamulasa

答えて

3

タグを使用しているためです。 フォームタグを使用して、問題を解決するメソッドを削除します。

  @foreach($articles as $key => $article) 
      <tr> 
      <td class="td-actions text-right"> 
       <a href="{{action('[email protected]',$article->id)}}"type="button" rel="tooltip" title="" class="btn btn-info btn-simple btn-xs" data-original-title="Edit Article"> 
        <i class="fa fa-edit"></i> 
       </a> 

       Form::open([ 'method' => 'delete', 'route' => [ 'items.destroy', $item->id ] ]) 
        {{ Form::submit('Delete', ['class' => 'btn btn-danger']) }} 
       {{ Form::close() }} 

      </td> 
      </tr> 
      @endforech 
+0

@ Sameer Shaikh:この権利を得るために。タグ付きの例外の理由は何ですか?そしてそれはなぜフォームで動作しますか?なぜフォームなしで@destroyメソッドを呼び出すことができないのですか? – Mamulasa

+1

リソースを削除するために必要なhttpメソッドは "DELETE"です。通常のリンクは、 "GET"のHttpメソッドを持っています。そしてdelete.excluding get要求を除いて、他のすべてのリクエストはフォームを通じてのみ行うことができます。すなわち、 Put、Patch、Deleteなど –

2

この

public function destroy($id) { 
    $article = Article::findOrFail($id); 
    $article->delete(); 

    return view('dashboard')->with([ 
    'flash_message' => 'Deleted', 
    'flash_message_important' => false 
    ]); 
} 
2

のようにあなたは、たとえば、destroy()アクションを呼び出すためにdeleteメソッドを使用する必要がありますようにしてくださいここにa hrefリンクを使用してください。

+0

この権利を取得するだけです。タグ付きの例外の理由は何ですか?そしてそれはなぜフォームで動作しますか?なぜフォームなしで@destroyメソッドを呼び出すことができないのですか? – Mamulasa

+0

フォームなしでdestroyを使うことはできますが、それ以上のコード行を必要とするajax呼び出しを作成する必要があります。 – lewis4u

関連する問題