I just started with Laravel on my project and I face some problems in routes. Currently, I made tutorial resource route:
Route::resource('/tutorials', 'TutorialsController')->parameters(['tutorial' => 'id']);
route:list
gives me the following output:
POST | tutorials
GET|HEAD | tutorials
GET|HEAD | tutorials/create
DELETE | tutorials/{tutorial}
PUT|PATCH | tutorials/{tutorial}
GET|HEAD | tutorials/{tutorial}
GET|HEAD | tutorials/{tutorial}/edit
Everythings works perfectly, now I would like to add some mini-series to some tutorials, I would like to add a new resource route and leave my route like this:
// Tutorials
POST | tutorials
GET|HEAD | tutorials
GET|HEAD | tutorials/create
DELETE | tutorials/{tutorial}
PUT|PATCH | tutorials/{tutorial}
GET|HEAD | tutorials/{tutorial}
GET|HEAD | tutorials/{tutorial}/edit
// Mini-series of tutorials
POST | tutorials/{tutorial}
GET|HEAD | tutorials/{tutorial}/create
GET|HEAD | tutorials/{tutorial}/{mini-serie}
DELETE | tutorials/{tutorial}/{mini-serie}
PUT|PATCH | tutorials/{tutorial}/{mini-serie}
GET|HEAD | tutorials/{tutorial}/{mini-serie}/edit
At this point I was able to make it creating all routes manually:
// Mini-series routes:
Route::post('tutorials/{tutorial}', 'SeriesController@store')->name('serie.store');
Route::get('tutorials/{tutorial}/create', 'SeriesController@create')->name('serie.create');
Route::get('tutorials/{tutorial}/{mini-serie}', 'SeriesController@show')->name('serie.show');
Route::delete('tutorials/{tutorial}/{mini-serie}', 'SeriesController@destroy')->name('serie.destroy');
Route::patch('tutorials/{tutorial}/{mini-serie}', 'SeriesController@update')->name('serie.update');
Route::get('tutorials/{tutorial}/{mini-serie}/edit', 'SeriesController@edit')->name('serie.edit');
// Tutorials routes:
Route::resource('/tutorials', 'TutorialsController')->parameters(['tutorial' => 'id']);
As you may notice there is a lot of code here, I would like to ask if someone know if there is some additional option that would simplify this code. I would like to add a second Route::resource
and leave it clean, but when I give it a try I got the following output:
// Route::resource('/tutorials/{tutorial}', 'SeriesController')->parameters(['tutorial' => 'id']);
POST | tutorials/{tutorial}
GET|HEAD | tutorials/{tutorial}
GET|HEAD | tutorials/{tutorial}/create
GET|HEAD | tutorials/{tutorial}/{{tutorial}}
DELETE | tutorials/{tutorial}/{{tutorial}}
PUT|PATCH | tutorials/{tutorial}/{{tutorial}}
GET|HEAD | tutorials/{tutorial}/{{tutorial}}/edit