Moving Controllers to sub-folders in a correct way

If your application gets bigger, it makes sense to structure Controllers with sub-folders. But it takes a little more effort than just moving the files here and there. Let me explain the structure.

For example, we want to have a sub-folder app/Http/Controllers/Admin and then inside of it we have our AdminController.php, that’s fine. What we need to do inside of the file itself:

1. Correct namespace – specify the inner folder:

2. Use Controller – from your inner-namespace Laravel won’t “understand” extends Controller, so you need to add this:

3. Routes – specify full path
This wouldn’t work anymore:

This is the correct way:

And that’s it – now you can use your controller from sub-folder.

Liked the article? Maybe you need help with your Laravel project?
Our LaravelDaily Team can help!

6 thoughts on “Moving Controllers to sub-folders in a correct way

  1. If you have more than a couple controllers in a subfolder, you can use a route group with these controllers’ namespace to keep your routes nicely organized:

    Route::group([‘namespace’ => ‘Admin’], function() {
    Route::get(‘admin’, ‘AdminController@getHome’);
    ….
    });

    Or with a prefix and middleware:

    Route::group([‘prefix’ => ‘admin’, ‘middleware’ => ‘auth’, ‘namespace’ => ‘Admin’], function() {
    Route::get(‘/’, ‘AdminController@getHome’);
    ….
    });

Leave a Reply

Your email address will not be published. Required fields are marked *