我有一个使用$router->resource([])
的程序。我用laravel-admin。
在这里我的routes.php
$router->resources([
'programs' => ProgramController::class,
'programs/categories' => ProgramCategoryController::class,
]);
在我的programs
它与所有crud
操作的良好工作。
但是在我的programs/categories
它没有工作,说没找到。 route controller
必须使用不同的url
吗?...
我的意思是我的类别不能是我的程序与不同的控制器child
?...
尝试将“程序/类别”更改为“programs.categories”
您想要将“程序”前缀添加到类别资源路由中。您可以通过更改代码来执行此操作,如下所示:
$router->resources([
'programs' => ProgramController::class,
]);
// to add programs prefix to categories routes
Route::group(['prefix' => 'programs'], function () use ($router) {
$router->resource('categories', ProgramCategoryController::class);
// here you can add more routes and all those routes will have
// "programs" prefix in there url
});
请参考https://laravel.com/docs/5.5/controllers#resource-controllers
补充资源控制器
如果您需要向资源控制器添加超出默认资源路由集的其他路由,则应在调用Route::resource;
之前定义这些路由,否则,resource
方法定义的路由可能会无意中优先于您的补充路由:
Route::get('photos/popular', 'PhotoController@method');
Route::resource('photos', 'PhotoController');
所以在上面我的案例中,只需更改一下:
$router->resources([
'programs' => ProgramController::class,
'programs/categories' => ProgramCategoryController::class,
]);
对此:
$router->resources([
'programs/categories' => ProgramCategoryController::class,
'programs' => ProgramController::class,
]);
它现在运作良好,也都是crud
运营。
它不是一个最佳的解决方案,但它为我工作。