Search code examples
codeigniterroutescodeigniter-4

How to Call Subfolder Controller method in Routes in CodeIgniter 4


I have controllers in subfolders

--Controllers
----Admin
--------UserController
--------AccountController
----User
--------UserController
--------AccountController

I write routes for it

$routes->group('user', function ($routes){
    $routes->get('dashboard', 'UserDashboard::index');
    $routes->get('changePassword', 'User\AccountController::changePassword');
});

It give me 404 even though I have method and have something output as well

Controller code

<?php namespace App\Controllers;

use App\Controllers\BaseController;

class AccountController extends BaseController
{
    public function index()
    {
        echo "Hello";
        exit();
        return view('user/account/changePassword');
    }

    public function changePassword()
    {
        echo "Change Password View";
        exit();
        return view('user/account/changePassword');
    }
}

enter image description here


Solution

  • You need to change the namespace of your controllers.

    User controllers

    <?php namespace App\Controllers\User;
    
    use App\Controllers\BaseController;
    
    class AccountController extends BaseController
    {
        
    }
    

    Admin controllers

    <?php namespace App\Controllers\Admin;
    
    use App\Controllers\BaseController;
    
    class AccountController extends BaseController
    {
        
    }