gpt4 book ai didi

laravel - 如何覆盖 Backpack 的 UserCrudController?

转载 作者:行者123 更新时间:2023-12-05 09:37:21 29 4
gpt4 key购买 nike

我正在尝试覆盖/扩展 Laravel 8 中 Backpack 的默认 UserCrudController,以便我可以用我自己的替换列表和编辑操作。为此,我尝试了:

php artisan backpack:crud 用户

但是,app/Http/Controllers/Admin/UserCrudController.php 中的新文件中的代码没有运行,除了 'show' 路由 - 大概是因为 使用\Backpack\CRUD\app\Http\Controllers\Operations\ShowOperation; 不存在于 /vendor/backpack/permissionmanager/src/app/Http/Controllers/UserCrudController.php 而它确实存在在我的新 Controller 中。

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 |

我怎样才能让我的新 Controller 优先?我的 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

最佳答案

我知道我来晚了,但我想提供一种不同的方式来使用自定义用户 CRUD Controller 。我不必添加或更改任何路线。只需在 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);

// ...
}

不确定这是更好还是更坏的方式 (?)。它只是成功了,所以我不必更改任何 Backpack 路由或指向 UserCrudController 的其他代码。另外,我将所有覆盖都放在一个地方,这样我就不必在不同的文件中寻找。

不确定更好,只是不同。

关于laravel - 如何覆盖 Backpack 的 UserCrudController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64268115/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com