I am trying to override/extend Backpack's default UserCrudController in Laravel 8 so that I can replace the list and edit operations with my own. To do this I tried:
php artisan backpack:crud User
However, code from the new file in app/Http/Controllers/Admin/UserCrudController.php
is not being run, apart from for the 'show' route - presumably because use \Backpack\CRUD\app\Http\Controllers\Operations\ShowOperation;
does not exist in /vendor/backpack/permissionmanager/src/app/Http/Controllers/UserCrudController.php
whereas it does in my new controller.
php artisan route:list | grep -i user
tells me the following:
| | 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 |
How can I make it so that my new controller takes precedence? My routes/backpack/custom.php
currently reads as follows:
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