Laravel 5.5路由控制器[未找到页面]

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

我有一个使用$router->resource([])的程序。我用laravel-admin。

在这里我的routes.php

$router->resources([
    'programs'             => ProgramController::class,
    'programs/categories'  => ProgramCategoryController::class,
]);

在我的programs它与所有crud操作的良好工作。

但是在我的programs/categories它没有工作,说没找到。 route controller必须使用不同的url吗?...

我的意思是我的类别不能是我的程序与不同的控制器child?...

php laravel
3个回答
0
投票

尝试将“程序/类别”更改为“programs.categories”


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
});

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运营。

它不是一个最佳的解决方案,但它为我工作。

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