Php Laravel路由-无中间页的嵌套资源控制器

Php Laravel路由-无中间页的嵌套资源控制器,php,laravel,routes,resources,Php,Laravel,Routes,Resources,我有两个控制器-ChController和FillController。控制器工作正常 Route::resource('c', 'ChController'); | | GET|HEAD | c | c.index | App\Http\Controllers\ChController@index | | | | GET|HEAD | c/create |

我有两个控制器-ChController和FillController。控制器工作正常

Route::resource('c', 'ChController');

    |        | GET|HEAD | c                | c.index         | App\Http\Controllers\ChController@index     |            |
    |        | GET|HEAD | c/create         | c.create        | App\Http\Controllers\ChController@create    |            |
    |        | POST     | c                | c.store         | App\Http\Controllers\ChController@store     |            |
    |        | GET|HEAD | c/{c}            | c.show          | App\Http\Controllers\ChController@show      |            |
    |        | GET|HEAD | c/{c}/edit       | c.edit          | App\Http\Controllers\ChController@edit      |            |
    |        | PUT      | c/{c}            | c.update        | App\Http\Controllers\ChController@update    |            |
    |        | PATCH    | c/{c}            |                 | App\Http\Controllers\ChController@update    |            |
    |        | DELETE   | c/{c}            | c.destroy       | App\Http\Controllers\ChController@destroy   |            |
但是我需要嵌套的FillController(f),比如:

我试过:

Route::group(['prefix' => 'c/{c}'], function () {
    Route::resource('{f}', 'FillController');
}); 

    |        | GET|HEAD | c/{c}/{f}            | c.{c}.{f}.index   | App\Http\Controllers\FillController@index   |            |
    |        | GET|HEAD | c/{c}/{f}/create     | c.{c}.{f}.create  | App\Http\Controllers\FillController@create  |            |
    |        | POST     | c/{c}/{f}            | c.{c}.{f}.store   | App\Http\Controllers\FillController@store   |            |
    |        | GET|HEAD | c/{c}/{f}/{{f}}      | c.{c}.{f}.show    | App\Http\Controllers\FillController@show    |            |
    |        | GET|HEAD | c/{c}/{f}/{{f}}/edit | c.{c}.{f}.edit    | App\Http\Controllers\FillController@edit    |            |
    |        | PUT      | c/{c}/{f}/{{f}}      | c.{c}.{f}.update  | App\Http\Controllers\FillController@update  |            |
    |        | PATCH    | c/{c}/{f}/{{f}}      |                   | App\Http\Controllers\FillController@update  |            |
    |        | DELETE   | c/{c}/{f}/{{f}}      | c.{c}.{f}.destroy | App\Http\Controllers\FillController@destroy |            |


Route::group(['prefix' => 'c/{c}'], function () {
    Route::resource('f', 'FillController');
}); 

    |        | GET|HEAD | c/{c}/f          | c.{c}.f.index   | App\Http\Controllers\FillController@index   |            |
    |        | GET|HEAD | c/{c}/f/create   | c.{c}.f.create  | App\Http\Controllers\FillController@create  |            |
    |        | POST     | c/{c}/f          | c.{c}.f.store   | App\Http\Controllers\FillController@store   |            |
    |        | GET|HEAD | c/{c}/f/{f}      | c.{c}.f.show    | App\Http\Controllers\FillController@show    |            |
    |        | GET|HEAD | c/{c}/f/{f}/edit | c.{c}.f.edit    | App\Http\Controllers\FillController@edit    |            |
    |        | PUT      | c/{c}/f/{f}      | c.{c}.f.update  | App\Http\Controllers\FillController@update  |            |
    |        | PATCH    | c/{c}/f/{f}      |                 | App\Http\Controllers\FillController@update  |            |
    |        | DELETE   | c/{c}/f/{f}      | c.{c}.f.destroy | App\Http\Controllers\FillController@destroy |            |
它们都会生成中间页/f/,我不需要它

最接近的是:

Route::group(['prefix' => 'c/{c}'], function () {
    Route::resource('', 'FillController');
});

    |        | GET|HEAD | c/{c}/create  | c.{c}..create  | App\Http\Controllers\FillController@create  |            |
    |        | POST     | c/{c}         | c.{c}..store   | App\Http\Controllers\FillController@store   |            |
    |        | GET|HEAD | c/{c}/{}      | c.{c}..show    | App\Http\Controllers\FillController@show    |            |
    |        | GET|HEAD | c/{c}/{}/edit | c.{c}..edit    | App\Http\Controllers\FillController@edit    |            |
    |        | PUT      | c/{c}/{}      | c.{c}..update  | App\Http\Controllers\FillController@update  |            |
    |        | PATCH    | c/{c}/{}      |                | App\Http\Controllers\FillController@update  |            |
    |        | DELETE   | c/{c}/{}      | c.{c}..destroy | App\Http\Controllers\FillController@destroy |            |

但现在路由器不知道{f}参数。

首先,
f
不是中间页,正如您所说的,它只是一个URI段。这是一种方式,因为您清楚地说出正在访问哪个子资源(
f
)。我强烈建议你坚持下去


现在,如果你仍然想走自己的路,你可以实现它,只有一个例外。在命名方案中,不能为
f
子资源设置
索引
路由,因为它将覆盖
c
资源的
show

Route::group(['prefix'=>'c/{c}',function(){
//你不能拥有它,因为它将覆盖c.show
//路由::get('/',['as'=>'f.index','uses'=>'FillController@index']);
路由::get('/create',['as'=>'f.create','uses'=>'FillController@create']);
路由::post(“/”,[“as'=>“f.store”,“uses'=>”FillController@store']);
路由::get('/{f}/edit',['as'=>'f.edit','uses'=>'FillController@edit']);
路由::put('/{f}',['as'=>'f.update','uses'=>'FillController@update']);
路由::patch('/{f}','FillController@update');
路由::删除('/{f}',['as'=>'f.destroy','uses'=>'FillController@destroy']);
});
|| GET | HEAD | c | c.index | App\Http\Controllers\ChController@index | | || GET | HEAD | c/create | c.create | App\Http\Controllers\ChController@create | | || POST | c | c.store | App\Http\Controllers\ChController@store | | || GET | HEAD | c/{c}| f.index | App\Http\Controllers\FillController@index | | || GET | HEAD | c/{c}/edit | c.edit | App\Http\Controllers\ChController@edit | | || PUT | c/{c}| c.update | App\Http\Controllers\ChController@update | | ||补丁| c/{c}| | App\Http\Controllers\ChController@update | | ||删除| c/{c}| c.destroy | App\Http\Controllers\ChController@destroy | | || GET | HEAD | c/{c}/create | f.create | App\Http\Controllers\FillController@create | | || POST | c/{c}| f.store | App\Http\Controllers\FillController@store | | || GET | HEAD | c/{c}/{f}/edit | f.edit | App\Http\Controllers\FillController@edit | | || PUT | c/{c}/{f}f.update | App\Http\Controllers\FillController@update | | ||补丁| c/{c}/{f}| | App\Http\Controllers\FillController@update | | ||删除| c/{c}/{f}| f.destroy | App\Http\Controllers\FillController@destroy | |
Route::group(['prefix' => 'c/{c}'], function () {
    Route::resource('', 'FillController');
});

    |        | GET|HEAD | c/{c}/create  | c.{c}..create  | App\Http\Controllers\FillController@create  |            |
    |        | POST     | c/{c}         | c.{c}..store   | App\Http\Controllers\FillController@store   |            |
    |        | GET|HEAD | c/{c}/{}      | c.{c}..show    | App\Http\Controllers\FillController@show    |            |
    |        | GET|HEAD | c/{c}/{}/edit | c.{c}..edit    | App\Http\Controllers\FillController@edit    |            |
    |        | PUT      | c/{c}/{}      | c.{c}..update  | App\Http\Controllers\FillController@update  |            |
    |        | PATCH    | c/{c}/{}      |                | App\Http\Controllers\FillController@update  |            |
    |        | DELETE   | c/{c}/{}      | c.{c}..destroy | App\Http\Controllers\FillController@destroy |            |
| | GET|HEAD | c | c.index | App\Http\Controllers\ChController@index | | | | GET|HEAD | c/create | c.create | App\Http\Controllers\ChController@create | | | | POST | c | c.store | App\Http\Controllers\ChController@store | | | | GET|HEAD | c/{c} | f.index | App\Http\Controllers\FillController@index | | | | GET|HEAD | c/{c}/edit | c.edit | App\Http\Controllers\ChController@edit | | | | PUT | c/{c} | c.update | App\Http\Controllers\ChController@update | | | | PATCH | c/{c} | | App\Http\Controllers\ChController@update | | | | DELETE | c/{c} | c.destroy | App\Http\Controllers\ChController@destroy | | | | GET|HEAD | c/{c}/create | f.create | App\Http\Controllers\FillController@create | | | | POST | c/{c} | f.store | App\Http\Controllers\FillController@store | | | | GET|HEAD | c/{c}/{f}/edit | f.edit | App\Http\Controllers\FillController@edit | | | | PUT | c/{c}/{f} | f.update | App\Http\Controllers\FillController@update | | | | PATCH | c/{c}/{f} | | App\Http\Controllers\FillController@update | | | | DELETE | c/{c}/{f} | f.destroy | App\Http\Controllers\FillController@destroy | |