Php Laravel路由-无中间页的嵌套资源控制器
我有两个控制器-ChController和FillController。控制器工作正常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 |
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 | |