Middleware
Middleware adalah sesuatu seperti kontroler namun bukan bagian inti untuk menangai request. Biasanya keberadaan middleware adalah untuk mempermudah proses kontroler yang mungkin akan digunakan lagi oleh kontroler lain. Oleh sebab itu, satu middleware biasanya digunakan oleh beberapa route.
Semua middleware di framework mim harus extends dari Mim\Middleware
.
Sama seperti peraturan kontroler, nama middleware harus diakhiri dengan teks
Middleware
. Tapi ketika di daftarkan di route hanya nama saja. Begitu juga
dengan action nya, harus diakhiri dengan Action
. Lihat contoh di bawah:
// ./modules/[name]/middleware/AuthMiddleware.php
class AuthMiddleware extends \Mim\Middleware
{
// ...
public function loginAction(){
// melanjutkan ke middleware selanjutnya
// atau ke kontroler
$this->req->next();
}
}
// ./modules/[name]/config.php
return [
// ...
'routes' => [
'site' => [
'siteUserIndex' => [
'path' => '/user',
'handler' => 'User::index',
'middlewares' => [
'pre' => [
// penulisan Class tanpa Middleware
// dan method tanpa Action
'Auth::login' => 1
]
]
]
]
]
// ...
];
Pada contoh di atas, route dengan nama siteUserIndex
menggunakan pre middleware
AuthMiddleware
dengan action loginAction
, tapi yang ditulis hanya Auth
dan
login
.
Pada umumnya, middleware harus memanggil perintah $this->next()
untuk melanjutkan
request ke middleware selanjutnya, atau ke kontroler yang bertanggungjawab. Walaupun
bisa saja middleware tidak memanggil perintah tersebut karena alasan sesuatu, seperti
menghentikan proses request sebelum sampai ke kontroler karena user belum login.