-
Notifications
You must be signed in to change notification settings - Fork 2
F. Controller
Benedict E. Pranata edited this page Jul 16, 2019
·
1 revision
Controller dibagi menjadi dua, yaitu controller private dan controller public.
Controller private wajib diakses dengan JWT, sedangkan controller public dapat diakses secara langsung tanpa memerlukan JWT.
Untuk membuat controller private, maka harus diletakkan pada folder App/Controllers/Privates
dan dengan meng-extends App\Controllers\PrivateController
.
Contohnya sebagai berikut
<?php
namespace App\Controllers\Privates;
class NamaControllerPrivate extends \App\Controllers\PrivateController
{
private $MODEL; // inisiasi variabel untuk model
/* Constructor */
public function __construct(\Slim\Container $container)
{
/* Call Parent Constructor */
parent::__construct($container);
/* Set Model */
$this->MODEL = new \App\Models\NamaModel($container);
}
/* Method yang diinginkan */
public function namaMethod($request, $response, $args)
{
try {
// gunakan $args untuk mendapatkan value dari $_GET['nama_get_key']
// untuk data $_POST gunakan $this->param['nama_key']
// filter setiap variabel Anda sebelum masuk ke model
$httpGet = $this->MODEL->olahdata($args['nama_get_key']);
// jsonSuccess merupakan method PrivateController untuk mencetak json success=true
// dan menambahkan tambahan header JWT yang berisi token JWT
return return $this->jsonSuccess('Pesan jika sukses');
} catch(\Exception $e){
// jsonFail merupakan method PrivateController untuk mencetak json success=false
// dan menambahkan tambahan header JWT yang berisi token JWT
return $this->jsonFail('Pesan jika gagal', ['error' => $e->getMessage()]);
}
}
}
Untuk membuat controller public, maka harus diletakkan pada folder App/Controllers/Pubics
dan dengan meng-extends App\Controllers\PublicController
.
Contohnya sebagai berikut
<?php
namespace App\Controllers\Publics;
class NamaControllerPublic extends \App\Controllers\PublicController
{
private $MODEL; // inisiasi variabel untuk model
/* Constructor */
public function __construct(\Slim\Container $container)
{
/* Call Parent Constructor */
parent::__construct($container);
/* Set Model */
$this->MODEL = new \App\Models\NamaModel($container);
}
/* Method yang diinginkan */
public function namaMethod($request, $response, $args)
{
try {
// gunakan $args untuk mendapatkan value dari $_GET['nama_get_key']
// untuk data $_POST gunakan $this->param['nama_key']
// filter setiap variabel Anda sebelum masuk ke model
$httpGet = $this->MODEL->olahdata($args['nama_get_key']);
// jsonSuccess merupakan method PublicController untuk mencetak json success=true
// fungsi ini tidak menambahkan header jwt pada hasil
return return $this->jsonSuccess('Pesan jika sukses');
} catch(\Exception $e){
// jsonFail merupakan method PublicController untuk mencetak json success=false
// fungsi ini tidak menambahkan header jwt pada hasil
return $this->jsonFail('Pesan jika gagal', ['error' => $e->getMessage()]);
}
}
}