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:
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.