Passing 2 Parameters to Laravel Routes - Resources

后端 未结 2 1616
广开言路
广开言路 2021-02-09 07:14

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:

         


        
相关标签:
2条回答
  • 2021-02-09 07:57

    As far as I know about resources

    Route::resource('files', 'FileController');
    

    The above mentioned resource will route the following urls.

    Few Actions Handled By Resource Controller for your Route::resource('files', 'FileController');

    Route::get('files',FileController@index) // get req will be routed to the index() function in your controller
    Route::get('files/{val}',FileController@show) // get req with val will be routed to the show() function in your controller
    Route::post('files',FileController@store) // post req will be routed to the store() function in your controller
    Route::put('files/{id}',FileController@update) // put req with id will be routed to the update() function in your controller
    Route::delete('files',FileController@destroy) // delete req will be routed to the destroy() function in your controller
    

    the single resource Mentioned above will do all the listed routing

    Apart from those you have to write your custom route

    In your scenario of

    Route::group(['prefix' => 'project'], function(){
      Route::group(['prefix' => '{project_id}'], function($project_id){
    
        // Files
        Route::resource('files', 'FileController');
    
      });
    }); 
    

    domain.com/project/100/files

    if its a get request will be routed to FileController@index
    if its a post request will be routed to FileController@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 to FileController@show
    if its a put request will be routed to FileController@update
    if its a delete request will be routed to FileController@destroy

    and it has no impact on any other urls you have mentioned

    Provided, you need to have RESTful Resource Controllers

    0 讨论(0)
  • 2021-02-09 08:17

    For the request like '/project/100/file/56968', you must specify your route like this:

    Route::resource('project.file', 'FileController');
    

    And then you can get parameters at the show method of the controller:

    public function show($project, $file) {
        dd([
            '$project' => $project,
            '$file' => $file
        ]);
    }
    

    The result of this example will be:

    array:2 [▼
      "$project" => "100"
      "$file" => "56968"
    ]
    
    0 讨论(0)
提交回复
热议问题