[英]Delete not working and redirecting to the same page - Laravel
我是 laravel 的新手,遇到了一個問題。 我在 Controller 中做了一個刪除功能,並在路由中正確添加了它。 然后我將它連接到視圖中的一個按鈕。 當我按下按鈕時,它會將我重定向到同一頁面而不刪除任何內容。
這是我的功能:
public function delete_user($id){
$data = User::where('id' , $id);
$data->delete();
return route('home');
}
這是我的路線:
Route::get('/delete/user/{id}' , 'UserController@delete_user');
我在這樣的視圖中添加它:
<a href="{{action('UserController@delete_user' , $user->id)}}"><button class="btn btn-info btn-fill pull-right">Delete Profile</button></a>
重定向后有一個 ? 在像abcd.com/delete/1?
這樣的 url abcd.com/delete/1?
當我將鼠標懸停在按鈕上時,它會顯示正確的路線(圖像中的左下角),但是當我按下它時沒有任何反應:
任何幫助,將不勝感激。 謝謝
編輯:相同的功能在另一個視圖實例中工作得很好。
嘗試這個:
public function delete_user($id){
$data = User::where('id' , $id)->first();
// or
// $data = User::find($id);
$data->delete();
return route('home');
}
每當您使用where
子句檢索單個資源時,您必須為集合調用first()
或get()
。
嘗試這樣做:
控制器方法
public function delete_user($id){
$user = User::findOrFail($id);
$user->delete();
return route('home');
}
路線
Route::delete('/delete/user/{id}' , 'UserController@delete_user')->name('delete-user');
看法
<a class="btn btn-info btn-fill pull-right" href="{{ route('delete-user') }}"
onclick="event.preventDefault();
document.getElementById('delete-user').submit();">
{{ __('Delete user') }}
</a>
<form id="delete-user" action="{{ route('delete-user') }}" method="POST" style="display: none;">
@csrf
</form>
另外我認為<a href="{{action('UserController@delete_user' , $user->id)}}"><button class="btn btn-info btn-fill pull-right">Delete Profile</button></a>
應該有問題,因為您在鏈接中有一個按鈕......這是錯誤的。 如果你想使用按鈕,我剛剛向你展示的方法更好。 但實際上您的鏈接應該如下所示:
<a href="{{ url("/delete/user/{$user->id}")}}">Delete Profile</a>
您需要修改控制器內的刪除功能,如下所示...
public function delete_user($id){
$data = User::find($id);
$data->delete();
return redirect('/home'); //write name of view where you want to go.
}
經過一些實驗,我似乎犯了一個相當粗心的錯誤。 我是作為表單提交類型刪除的。 我只是把按鈕放在表單外面,它工作得很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.