php - php CRUD Laravel 5如何鏈接資源控制器的破壞?

  显示原文与译文双语对照的内容
145 0

我有一個鏈接


<a class="trashButton" href="{{ URL::route('user.destroy',$members['id'][$i]) }}" style="cursor: pointer;"><i class="fa fa-trash-o"></i></a> 



這個鏈接應該直接指向Usercontroller的破壞方法,這是我的路線 Route::resource('/user', 'BackEndUsersController');

UserController是一個資源控制器。 但是這一刻它引導我進行顯示方法而不是指向銷毀方法

时间: 原作者:

139 2

這是因為你正在通過get方法請求資源,而不是刪除方法。 看看


DELETE/photo/{photo} destroy photo.destroy


GET/photo/{photo} show photo.show



兩個路由都具有相同的URL,但 header 謂詞標識要調用的。 查看 rest式表。 例如通過 ajax,你可以發送刪除請求:


$.ajax({


 url: '/user/4',


 type: 'DELETE',//user.destroy


 success: function(result) {


//Do something with the result


 }


});



原作者:
129 5

你需要發送 DELETE 請求而不是 GET 請求。 你不能用鏈接來做,所以你必須使用AJAX請求或者表單。

下面是通用表單方法:


<form action="{{ URL::route('user.destroy', $members['id'][$i]) }}" method="POST">


 <input type="hidden" name="_method" value="DELETE">


 <input type="hidden" name="_token" value="{{ csrf_token() }}">


 <button>Delete User</button>


</form>



如果你使用 Laravel 5.1或者更高版本的,那麼你可以使用 Laravel 幫助器內置的代碼來縮短代碼:


<form action="{{ route('user.destroy', $members['id'][$i]) }}" method="POST">


 {{ method_field('DELETE') }}


 {{ csrf_field() }}


 <button>Delete User</button>


</form>



如果你使用 Laravel 5.6或者更高版本的,那麼你可以使用新的刀片指令來進一步縮短代碼:


<form action="{{ route('user.destroy', $members['id'][$i]) }}" method="POST">


 @method('DELETE')


 @csrf


 <button>Delete User</button>


</form>



你可以在 Laravel 中閱讀有關方法欺騙的更多信息。

...