2017-05-19 6 views
-1

ソフト削除と強制削除オプションを持つユーザー管理システムを作成しました。しかし、強制削除オプションが機能するのに問題があります。laravelで削除を強制する方法5.4

ルート:

Route::post('users/{user}/delete', '[email protected]'); 

関連するコントローラコード:

public function forcedelete(User $user) 
{ 
    $user->forceDelete(); 
    return redirect('users/trash'); 
} 

ビューコード:

<a href="{{ url('users/'.$user->id.'/delete') }}" 
    onclick="event.preventDefault(); document.getElementById('delete').submit();"> 
    <i class="fa fa-trash-o btn btn-danger btn-xs"></i> 
</a> 

<form id="delete" action="{{ url('users/'.$user->id.'/delete') }}" 
     method="POST" style="display: none;"> 
    {{ csrf_field() }} 
    {{ method_field('DELETE') }} 
</form> 

私は取得していますエラーがある

MethodNotAllowedHttpException in RouteCollection.php line 233: 

なぜ機能しないのですか?どのように修正できますか?

+0

コントローラに同じメソッド名を使用することはできません。メソッド名を更新してからお試しください。 – Webinion

+0

私のソフト削除メソッド名は破壊するだけです 'public function destroy(User $ user) { $ user-> delete(); returnリダイレクト( 'users'); } ' – Masum

+1

はい、それを使用するか、この 'forceDestory'のようなものを使用できます。 – Webinion

答えて

2

このルートを他のユーザールートまたはユーザーリソースルートの上に配置してみてください。また、ソフト削除されたモデルでルートモデルのバインディングを使用しようとしていますが、これはうまくいきません。 IDを使用して手動で削除する必要があります。

public function forcedelete($id) 
{ 
    User::where('id', $id)->forcedelete(); 
    return redirect('users/trash'); 
} 

編集:定義されたルートの方法がポストされるので、フォームから{{ method_field('DELETE') }}を削除します。

+0

Sandeeshに感謝します。その作品。再び多くのtnx。 – Masum

関連する問題