如何绕过CRUD::路由(例如:Route::crud('profile', 'ProfileCrudController');)而直接进入一个动作,例如Route::get('profilecreate', 'ProfileCrudController@create');? 在crud::路由设置之外尝试任何一个路由,每个路由都会给出不同的错误。 即使是简单地直接路由到Route::get('profile', 'ProfileCrudController@index');也会为in_array()抛出错误。
的确,Backpack使用CrudControllers来加载路由。所以,如果你的CrudController不是无错误的,其他路由也会受到影响,出现错误。这是在控制器中加载路由的一个缺点--你的控制器不应该出现PHP错误。我建议你调试 in_array()
问题,并解决它。但是如果你不能做到这一点,或者你宁愿远离Backpack加载路线的方式,那么就有下面的解决方案。
什么?Route::crud('profile', 'ProfileCrudController');
它的作用是调用 CrudController::setupRoutes,进而调用该CrudController上的所有方法,这些方法看起来就像这样--。setupOperationNameRoutes()
- 方法,其唯一的目的是为操作加载路由(例如:setupCreateRoutes、setupUpdateRoutes、setupDeleteRoutes)。
如果由于某些原因,您不满意由 Route::crud()
宏,完全可以删除这一行,然后手动编写你的CrudPanel需要的所有路由。你的CrudController为每一个可以在管理面板中执行的操作使用了一个trait。每个操作特征都有一个 setupOperationNameRoutes()
方法,明确定义了它需要的路由。
你可以。
\Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation
);Route::delete('profile/{id}', ['as' => 'profile.destroy', 'uses' => 'ProfileCrudController@destroy', 'operation' => 'delete']);
routes/backpack/custom.php
文件,或其他任何你想持有该路由的地方。希望能帮到你