【问题标题】:laravel soft delete using a formlaravel 使用表单软删除
【发布时间】:2015-04-07 21:39:34
【问题描述】:

您好,我正在尝试使用表单软删除和恢复用户,我正在使用几个包用于用户身份验证和角色,它们是 Zizaco ConfideZizaco Entrust。我在 user.php 模型中添加了以下内容

use SoftDeletingTrait;
use ConfideUser;
use HasRole;
protected $softDelete = true;

我已经运行了一个测试来测试它是否有效:

Route::get('/deleteme', function(){ 
    User::find(2)->delete();
    return 'done';
});

这更新了时间戳字段,但是我想将它放入我的控制器中以整理并给它一个表格。所以我在用户表中做了这个:

 @if(empty($user->deleted_at))
           {{Form::open(['method'=>'PATCH','action'=>
            ['UsersController@softDeleteUser',$user->id]])}}
              <button type="submit">Suspend</button>
              {{Form::close()}}  
            @else 
             {{Form::open(['method'=>'delete','action'=>
            ['UsersController@restoreUser',$user->id]])}}
                <button type="submit">Re-activate</button>
            {{Form::close()}}  
            @endif

在我的控制器中:

public function softDeleteUser($id){
    $user = User::find($id);
    $user->delete();
    // redirect
    return Redirect::to('/admin');
}

public function restoreUser($id) {
    User::find($id)->restore();        
    $user->save();
    Redirect::to("/admin");
}

在我的路线中:

Route::post('/admin/user/{resource}/delete', 
       array('as' => 'admin.user.delete', 'uses' 
       =>'UsersController@softDeleteUser'));
Route::post('/admin/user/{resource}/restore', 
      array('as' => 'admin.user.restore', 
     'uses' =>'UsersController@restoreUser'));

但是我得到了这个错误:

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException 

任何想法我做错了什么??

【问题讨论】:

    标签: laravel eloquent soft-delete


    【解决方案1】:

    您已将两个表单设置为使用 PATCH 和 DELETE 方法,但您的路由设置为 POST (Route::post)。

    您可以更改路线:

    Route::patch('/admin/user/{resource}/delete', 
        array('as' => 'admin.user.delete', 'uses' 
        =>'UsersController@softDeleteUser'));
    Route::delete('/admin/user/{resource}/restore', 
        array('as' => 'admin.user.restore', 
       'uses' =>'UsersController@restoreUser'));
    

    或删除表单中的method(默认为 POST)

    {{Form::open(['action'=> ['UsersController@softDeleteUser',$user->id]])}}
         <button type="submit">Suspend</button>
    {{Form::close()}}
    

    {{Form::open(['action'=> ['UsersController@restoreUser',$user->id]])}}
         <button type="submit">Re-activate</button>
    {{Form::close()}}  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-13
      • 2016-03-05
      • 1970-01-01
      • 2014-04-20
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      • 1970-01-01
      相关资源
      最近更新 更多