如何直接路由到Laravel Backpack控制器的动作?

问题描述 投票:0回答:1

如何绕过CRUD::路由(例如:Route::crud('profile', 'ProfileCrudController');)而直接进入一个动作,例如Route::get('profilecreate', 'ProfileCrudController@create');? 在crud::路由设置之外尝试任何一个路由,每个路由都会给出不同的错误。 即使是简单地直接路由到Route::get('profile', 'ProfileCrudController@index');也会为in_array()抛出错误。

backpack-for-laravel laravel-backpack
1个回答
0
投票

的确,Backpack使用CrudControllers来加载路由。所以,如果你的CrudController不是无错误的,其他路由也会受到影响,出现错误。这是在控制器中加载路由的一个缺点--你的控制器不应该出现PHP错误。我建议你调试 in_array() 问题,并解决它。但是如果你不能做到这一点,或者你宁愿远离Backpack加载路线的方式,那么就有下面的解决方案。

什么?Route::crud('profile', 'ProfileCrudController'); 它的作用是调用 CrudController::setupRoutes,进而调用该CrudController上的所有方法,这些方法看起来就像这样--。setupOperationNameRoutes() - 方法,其唯一的目的是为操作加载路由(例如:setupCreateRoutes、setupUpdateRoutes、setupDeleteRoutes)。

如果由于某些原因,您不满意由 Route::crud() 宏,完全可以删除这一行,然后手动编写你的CrudPanel需要的所有路由。你的CrudController为每一个可以在管理面板中执行的操作使用了一个trait。每个操作特征都有一个 setupOperationNameRoutes() 方法,明确定义了它需要的路由。

你可以。

  • 通过你的CrudController使用的每一个操作(例如: \Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation);
  • 在该文件中,查看该操作所需要的路由(例如: );在该文件中,查看该操作所需要的路由。Route::delete('profile/{id}', ['as' => 'profile.destroy', 'uses' => 'ProfileCrudController@destroy', 'operation' => 'delete']);
  • 把那个路由硬编码到你的 routes/backpack/custom.php 文件,或其他任何你想持有该路由的地方。

希望能帮到你

© www.soinside.com 2019 - 2024. All rights reserved.