我有一个使用$router->resource([])
的程序。我使用laravel-admin。
这是我的routes.php
$router->resources([
'programs' => ProgramController::class,
'programs/categories' => ProgramCategoryController::class,
]);
在我的programs
上,它可以与所有crud
操作一起很好地工作。
但在我的programs/categories
上无法正常工作,表示找不到。 route controller
是否必须使用其他url
?...
我的意思是我的类别不能child
来自具有不同控制器的程序吗?...
答案 0 :(得分:0)
尝试将“程序/类别”更改为“ programs.categories”
答案 1 :(得分:0)
参阅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
个操作。
这不是最佳解决方案,但对我有用。
答案 2 :(得分:0)
您要在类别资源路由中添加“程序”前缀。您可以通过如下更改代码来实现:
$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
});