Skip to content

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.

Private

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()]);
        }
    }
}

Public

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()]);
        }
    }
}
Clone this wiki locally