Tri*_*dis 3 laravel laravel-backpack
我正在尝试覆盖/扩展 Laravel 8 中 Backpack 的默认 UserCrudController,以便我可以用我自己的操作替换列表和编辑操作。为此,我尝试了:
php artisan backpack:crud User
但是,除了“显示”路线之外,新文件中的代码app/Http/Controllers/Admin/UserCrudController.php并未运行 - 可能是因为它use \Backpack\CRUD\app\Http\Controllers\Operations\ShowOperation;不存在于/vendor/backpack/permissionmanager/src/app/Http/Controllers/UserCrudController.php我的新控制器中,而它存在于我的新控制器中。
php artisan route:list | grep -i user告诉我以下内容:
| | GET|HEAD | api/user | | Closure | api |
| | POST | user | user.store | Backpack\PermissionManager\app\Http\Controllers\UserCrudController@store | web |
| | GET|HEAD | user | user.index | Backpack\PermissionManager\app\Http\Controllers\UserCrudController@index | web |
| | GET|HEAD | user/create | user.create | Backpack\PermissionManager\app\Http\Controllers\UserCrudController@create | web |
| | POST | user/search | user.search | Backpack\PermissionManager\app\Http\Controllers\UserCrudController@search | web |
| | PUT | user/{id} | user.update | Backpack\PermissionManager\app\Http\Controllers\UserCrudController@update | web |
| | DELETE | user/{id} | user.destroy | Backpack\PermissionManager\app\Http\Controllers\UserCrudController@destroy | web |
| | GET|HEAD | user/{id}/details | user.showDetailsRow | Backpack\PermissionManager\app\Http\Controllers\UserCrudController@showDetailsRow | web |
| | GET|HEAD | user/{id}/edit | user.edit | Backpack\PermissionManager\app\Http\Controllers\UserCrudController@edit | web |
| | GET|HEAD | user/{id}/show | user.show | App\Http\Controllers\Admin\UserCrudController@show | web |
Run Code Online (Sandbox Code Playgroud)
我怎样才能让我的新控制器优先?我routes/backpack/custom.php目前的读法如下:
Route::group([
'prefix' => config('backpack.base.route_prefix', 'admin'),
'middleware' => array_merge(
(array) config('backpack.base.web_middleware', 'web'),
(array) config('backpack.base.middleware_key', 'admin')
),
'namespace' => 'App\Http\Controllers\Admin',
], function () {
// custom admin routes
Route::crud('user', 'UserCrudController');
}); // this should be the absolute last line of this file
Run Code Online (Sandbox Code Playgroud)
我知道我已经迟到了,但我想提供一种不同的方式来使用自定义用户 CRUD 控制器。我不必添加或更改任何路线。app/Providers/AppServiceProvider只需在 register() 方法下的 ,中添加一行即可。
public function register() {
//Bind original crud controller to a custom controller
$this->app->bind(\Backpack\PermissionManager\app\Http\Controllers\UserCrudController::class, \App\Http\Controllers\Admin\UserCrudController::class);
// ...
}
Run Code Online (Sandbox Code Playgroud)
不确定这是更好还是更坏的方法(?)。它只是做到了这一点,所以我不必更改任何 Backpack 路由或指向 UserCrudController 的其他代码。另外,我将所有覆盖都集中在一个地方,因此我不必在不同的文件中寻找。
不确定哪个更好,只是不同。
| 归档时间: |
|
| 查看次数: |
2692 次 |
| 最近记录: |