Kontroler adalah bagian inti yang akan menangani request user. Sebagian besar logik route berada di sini. Setiap ada request, objek kontroler baru akan dibuat untuk menangani request tersebut. Semua kontroler di framework mim harus extends dari class Mim\Controller.

Pada umumnya, masing-masing gate memiliki main kontroler, dan route di bawahnya extends dari main kontroler tersebut. Pada kondisi seperti ini, maka main kontroler gate yang harus extends dari Mim\Controller.

Nama kontroler harus berakhiran Controller, sementara yang di daftarkan di route hanya nama tanpa teks Controller. Begitu juga dengan nama method untuk handling route, harus diakhiri dengan Action. Lihat contoh di bawah:

// ./modules/[name]/controller/UserController.php
class UserController extends \Mim\Controller
{
    // ...
    public function indexAction(){
        // logic
    }
}
// ./modules/[name]/config.php
return [
    // ...
    
    'routes' => [
        'site' => [
            'siteUserList' => [
                'path' => '/user',
                // penulisan Class tanpa Controller
                // dan method tanpa Action
                'handler' => 'User::index'
            ]
        ]
    ],
    
    // ...
];

Pada contoh di atas, route dengan nama siteUserList menggunakan class UserController dengan method indexAction, tapi yang dituliskan hanya User dan index.