求助,laravel5.3中trait方法冲突问题

1.在使用laravel5.3时,我同时在用户模型内使用了Entrust权限管理和softdeletes功能,结果里面restore方法冲突。
2.请问如何解决?
3.已尝试方案:

use EntrustUserTrait,SoftDeletes {
        EntrustUserTrait::restore insteadof SoftDeletes;
    }
use EntrustUserTrait { restore as private restoreA; }
    use SoftDeletes { restore as private restoreB; }
    
    public function restore()
    {
        $this->restoreA();
        $this->restoreB();
    }

两个网上的方案都不行
4.这是我的路由:

Route::group(['prefix' => 'admin', 'middleware' => ['auth']], function (){
    Route::get('/users/trash', 'Auth\UserControllers\UsersTrashController@index');
    Route::post('/users/trash/{id}', 'Auth\UserControllers\UsersTrashController@store')->name('userTrash.restore');
    Route::delete('/users/trash/{id}', 'Auth\UserControllers\UsersTrashController@destroy');
    Route::resource('/users', 'Auth\UserControllers\UsersController');
    Route::get('/permissions/{id}/edit', 'Auth\UserControllers\PermissionsController@edit')->name('perms.edit');
    Route::patch('/permissions/{id}', 'Auth\UserControllers\PermissionsController@update')->name('perms.update');
    Route::resource('/roles', 'Auth\UserControllers\RolesController');
});

这是我的控制器中store方法:

public function store($id)
    {
        $user = User::findOrFail($id);
        $user->restore();
        return redirect()->back();
    }

这是我视图里面的表单:

{{ Form::open(['method' => 'delete', 'route' => ['userTrash.restore', $user -> id]]) }}
       <button type="submit" class="btn btn-success waves-effect waves-light btn-sm">
             <i class="fa fa-check"></i>
       </button>
{{ Form::close() }}
阅读 2.5k
1 个回答

这是php的一个bug,参见https://bugs.php.net/bug.php?...

我所尝试出的一个workaround是同时use这两个含有相同方法名的trait,并且给他们分别指定别名(参见 https://3v4l.org/eJUbG

对于你的例子,那就是

use EntrustUserTrait, SoftDeletes  {
    EntrustUserTrait::restore as private restoreA; 
    SoftDeletes::restore as private restoreB; 
}
   
public function restore()
{
    $this->restoreA();
    $this->restoreB();
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题