我已经阅读了尽可能多的帖子,但没有一个可以解决我的问题。
路线:
Route::model('user', 'User');
Route::group(array('prefix' => 'admin'), function() {
Route::get('users/force-delete/{user}', array(
'as' => 'admin-users-force-delete',
'uses' => 'AdminController@handleUserForceDelete'
));
});
html:
<li><a href="{{ action('AdminController@handleUserForceDelete', $user->id) }}">Force Delete</a></li>
处理程序:
public function handleUserForceDelete(User $user)
{
$username_tmp = $user->username;
$message = 'Success! User ' . $username_tmp . ' has been deleted.';
if($user->trashed())
{
$user->forceDelete();
return Redirect::action('AdminController@showUsers')->with('message', $message);
} else {
return Redirect::action('AdminController@showUsers')->with('message', 'User deletion error! Please try again!');
}
}
我试图在同一个处理程序中放置delete和force-delete,并且删除操作发生但强制删除生成了NotFoundHttpException。所以我猜问题来自强制删除动作??
答案 0 :(得分:1)
我解决了!
对于任何遇到同样问题的人,软删除的用户(或任何东西)不会生成传递给处理程序(或闭包)的实例。因此,对于这种情况,我手动创建一个实例。
所以不要使用它:
//will not handle soft deleted model.
Route::model('user', 'User');
使用此:
Route::bind('user', function($value, $route)
{
return User::withTrashed()->where('id', '=', $value)->first();
});