带有前缀和资源 dosent 工作的 Laravel嵌套路由



>我有很多这样的路线:

Route::resource('/dashboard/class', 'classController');
Route::get('/dashboard/class/get-by-filter', 'classController@getByFilter');
Route::get('/dashboard/class/get-by-search', 'classController@getBySearch');
...
...
Route::resource('/dashboard/orders', 'OrderController');
Route::get('/dashboard/orders/get-by-filter', 'OrderController@getByFilter');
...

现在我想用前缀,组和资源编写这些,但是像这样写时遇到了问题:

Route::prefix('dashboard')->group(function()
{
Route::prefix('class')->group(function()
{
Route::resource('/', 'classController');
Route::get('/get-by-filter', 'classController@getByFilter');
Route::get('/get-by-search', 'classController@getBySearch');
});
Route::prefix('orders')->group(function()
{
Route::resource('/', 'OrderController');
Route::get('/get-by-filter', 'OrderController@getByFilter');
Route::get('/get-by-search', 'OrderController@getBySearch');
});
});

当我尝试访问这样的显示地址时,为什么要返回 404:

example.com/dashboard/orders/4

你需要写resource而不是get

Route::prefix('dashboard')->group(function()
{
Route::prefix('class')->group(function()
{
Route::resource('/', 'classController');
Route::get('/get-by-filter', 'classController@getByFilter');
Route::get('/get-by-search', 'classController@getBySearch');
});
Route::prefix('orders')->group(function()
{
Route::resource('/', 'OrderController');
Route::get('/get-by-filter', 'OrderController@getByFilter');
Route::get('/get-by-search', 'OrderController@getBySearch');
});
});

我正在使用这样的组路由。

<?php
Route::group(['prefix' => 'dashboard'], function() {
Route::group(['prefix' => 'class'], function() {
Route::resource('/', 'classController');
Route::get('/get-by-filter', 'classController@getByFilter');
Route::get('/get-by-search', 'classController@getBySearch');
});
Route::group(['prefix' => 'orders'], function() {
Route::resource('/', 'OrderController');
Route::get('/get-by-filter', 'OrderController@getByFilter');
Route::get('/get-by-search', 'OrderController@getBySearch');
});
});

试试这个。也许这会对你有所帮助。

好的,我想我明白了,您只需在 url 中传递 {id},然后在控制器方法中传递 dd($id(。

Route::group(['prefix'=>'dashboard'], function()
{
Route::group(['prefix'=>'class'], function()
{
Route::resource('/', 'classController');
Route::get('/get-by-filter', 'classController@getByFilter');
Route::get('/get-by-search', 'classController@getBySearch');
});
Route::group(['prefix'=>'orders'], function()
{
Route::resource('/{id}','classController');
Route::get('/get-by-filter', 'OrderController@getByFilter');
Route::get('/get-by-search', 'OrderController@getBySearch');
});
});

我建议您使用正确的命名空间,并确保您的类控制器重定向到确切的方法。

最新更新