I'm trying to build my routes using resources so that I can pass two parameters into my resources.
I'll give you a few examples of how the URLS would look:
domain.com/dashboard
domain.com/projects
domain.com/project/100
domain.com/project/100/emails
domain.com/project/100/email/3210
domain.com/project/100/files
domain.com/project/100/file/56968
So you can see I always need to have reference to the project_id and also the email/file id etc.
I realize I can do this manually by writing all routes by hand, but I'm trying to stick to the resource model.
I figured something like this might work?
Route::group(['prefix' => 'project'], function(){
Route::group(['prefix' => '{project_id}'], function($project_id){
// Files
Route::resource('files', 'FileController');
});
});
As far as I know about resources
The above mentioned resource will route the following urls.
Few Actions Handled By Resource Controller for your
Route::resource('files', 'FileController');
the single
resource
Mentioned above will do all the listedrouting
Apart from those you have to write your
custom route
In your scenario of
domain.com/project/100/files
if its a
get
request will be routed toFileController@index
if its a
post
request will be routed toFileController@store
if your "
domain.com/project/100/file/56968
" is changed to "domain.com/project/100/files/56968
" (file to files)then the following rooting will occur...domain.com/project/100/files/56968
if its a
get
request will be routed toFileController@show
if its a
put
request will be routed toFileController@update
if its a
delete
request will be routed toFileController@destroy
and it has no impact on any other
url
s you have mentionedProvided, you need to have RESTful Resource Controllers
For the request like '/project/100/file/56968', you must specify your route like this:
And then you can get parameters at the show method of the controller:
The result of this example will be: