Panada Framework 0.3.1 Documentation

Controller

Dalam terminologi MVC, controller adalah file yang menghubungkan requset dari view ke model. Di dalam controller ini pula dilakukan pengolahan logic sebelum dikirimkan ke file view untuk ditampilkan ke user.

Mengakses Controller

Controller di Panada adalah sebuah class yang dalam mengaksesnya menggunakan path url tertentu. Nama path url mewakili nama controller. Sebagai contoh, Jika Anda akses alamat:

http://www.mysite.com/index.php/welcome

Maka yang menjadi controller-nya adalah welcome. Atau:

http://www.mysite.com/home

Maka yang menjadi controller-nya adalah home.

Default Controller

Jika pada alamat url tidak ditambahkan argumen nama controller, maka Panada akan mengakses controller default yang bernama home.

http://www.mysite.com/

Hasilnya akan sama dengan:

http://www.mysite.com/index.php/home

Atau jika setting htacces telah diaktifkan:

http://www.mysite.com/home

Membuat Controller

Untuk membuat controller tambahkan sebuah file baru di dalam folder apps/controller/ dan beri nama sesuai dengan yang diinginkan, misalnya home.php.

Buat sebuah class baru di dalam file ini di mana class tersebut menjadi subclass inherits dari class Panada, berikut adalah contohnya:

Yang harus diperhatikan adalah prefix nama class. Di mana prefix ini menunjukan lokasi folder class tersebut. Untuk controller, prefix-nya adalah "Controller_". Hal yang sama juga berlaku pada class untuk library, dengan prefix "Library_" dan class untuk model dengan prefix "Model_"

Controller Method

Sebuah controller setidak-tidaknya harus memiliki method __construct dan index. Jika controller ini dikases tanpa argumen apapun, maka method yang akan diakses adalah index.

Jika aplikasi diakses dengan alamat:

http://www.mysite.com/home

Hasilnya akan sama jika diakses dengan alamat:

http://www.mysite.com/home/index

Untuk mengakses method di dalam class controller, tambahkan argumen "nama_method" setelah nama controllor pada alamat url.

http://www.mysite.com/home/nama_method

Method Parameter

Anda bisa mendapatkan nilai parameter untuk method dengan menambahkan argumen tambahan setelah nama method pada alamat url.

http://www.mysite.com/home/user/budi/jakarta

Maka untuk mendapatkan nilai budi dan jakarta di dalam method user, berikut adalah contohnya:

Load Component

Untuk me-load library ataupun model di dalam controller, berikut adalah contohnya:

Alias Controller

Alias controller adalah sebuah controller di mana dalam mengakesnya tidak perlu disebutkan secara eksplisit pada alamat URL.

Sebagai gambaran, sering kita jumpai sebuah website memberikan fasilitas dinamik/personal url bagi usernya, misalnya http://www.facebook.com/WordPress atau http://twitter.com/mongodb. Fasilitas ini akan memudahkan user untuk me-share halaman profilenya ke orang lain karena mudah untuk diingat.

Feature yang sama juga digunakan pada aplikasi pemendek URL seperti bit.ly.

Untuk membuat fasilitas ini Panada menyediakan feature Alias Controller yang terletak di dalam file apps/config.php.

$CONFIG['alias_controller'] = array();

Anda hanya perlu mengisikan array yang isinya "nama_class" => "nama_method".

Nama class adalah nama controller apa yang akan dijadikan alias dan nama_method adalah nama salah satu method yang ada di dalam controller tersebut.

$CONFIG['alias_controller'] = array('users' => 'index');

Kini, jika url yang diakses adalah:

http://www.mysite.com/kandar

Maka nilai "kandar" akan dikirimkan ke method index yang ada di dalam controller user.

Setelah mendapatkan nilai argumen, maka Anda bisa memanfaatkannya untuk melakukan pengecekan pada databse misalnya.

Yang perlu diperhatikan adalah, jika sebelumnya sudah ada controller dengan nama yang sama dengan argumen yang dikirimkan, maka yang akan dieksekusi adalah controller dan argumen tersebut akan diabaikan.

Alias Method

Cara kerja Alis Method mirip dengan Alias Controller bedanya, fasilitas ini berlaku pada level controller.

Sebagai contoh, jika Anda memiliki sebuah controller bernama news dan di dalamnya memiliki sebuah method bernama read, maka jika ingin mengakses artikel dengan id 10 maka urlnya menjadi:

http://www.mysite.com/news/read/10

Dengan Alias Method, url tersebut bisa dipersingkat menjadi:

http://www.mysite.com/news/10

Cara kerjanya adalah, semua argumen requset yang ada setelah nama controller akan diteruskan ke method alias.

Untuk menjalankan feature ini, yang perlu dilakukan adalah mendefenisikan nama method yang menjadi method alias di dalam file config. Secara default, nama dari method alias ini adalah alias:

$CONFIG['alias_method'] = 'alias';

Langkah selanjutnya adalah membuat sebuah method dengan nama alias maka controllernya menjadi:

Sama seperti alias controller, jika sebelumnya sudah ada method dengan nama yang sama dengan argumen yang dikirimkan, maka yang akan dieksekusi adalah method tersebut.

Sub Controller

Anda bisa memanggil sebuah controller lain dari dalam sebuah controller dengan method:

Library_tools::sub_controller( string $controller_name, array $arguments = array(), string $alias_method = false);

Parameters:

Variable Type Description Default Value
$controller_name string Nama controller yang akan dipanggil tanpa prefix "Controller_"
$arguments array Argument parameter array()
$alias_method mix Nama method alias false

Berikut contoh cara penggunaanya. Pertama buat sebuah controller yang akan menjadi sub controller:

Berikutnya buat sebuah controller lainnya yang akan digunakan untuk memanggil controller di atas:

Pertama-tama akses url berikut:

http://www.mysite.com/index.php/foo

Maka outputnya adalah: This is method Index from class Controller_foo

Kemudian akses url:

http://www.mysite.com/index.php/foo/done

Maka outputnya adalah: This is method Index from class Controller_news

Kemudain akses lagi url berikut:

http://www.mysite.com/index.php/foo/done/read/2/google

Maka outputnya adalah:

First parameter is 2
Second parameter is google

Tentu saja Anda juga bisa mengkombinasikan antara penggunaan Sub Controller, Alias Method dan Alis Controller sesuai dengan kebutuhan.

Diskusi