Controller
Dalam terminologi MVC, controller adalah file yang menghubungkan request 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 mod_rewrite telah diaktifkan (dengan setting .htaccess file yang benar):
http://www.mysite.com/home
Untuk merubah nama default controller dari home menjadi controller lainnya, Anda perlu merubahnya di halaman app/config/main.php pada bagian defaultController.
Perubahan nama default controller ini juga akan berlaku terhadap default controller sub-controller dan module.
Membuat Controller
Untuk membuat controller tambahkan sebuah file baru di dalam folder app/Controllers/ 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 Resources\Controllers, berikut adalah contohnya:
Controller Method
Sebuah controller setidak-tidaknya harus menggunakan namespace Resources yang akan digunakan untuk melakukan extend terhadap class Controllers. 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 "namaMethod" setelah nama controllor pada alamat url.
http://www.mysite.com/home/namaMethod
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 melakukan sharing 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 konfigurasinya terletak di dalam file app/config/main.php.
Key class menunjukan nama controller yang akan Anda gunakan, dan key method adalah nama method pada controller tersebut.
Kini, jika url yang diakses adalah:
http://www.mysite.com/mandriva
Maka nilai mandriva akan dikirimkan ke method index yang ada di dalam controller user.
Setelah mendapatkan nilai argumen, maka Anda bisa memanfaatkannya untuk melakukan pengecekan pada database 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 Alias Method mirip dengan Alias Controller bedanya, fasilitas ini berlaku pada level method 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 request yang ada setelah nama controller akan diteruskan ke method alias.
Untuk menjalankan feature ini, yang perlu dilakukan adalah mendefinisikan nama method yang menjadi method alias di dalam file config/main.php. Secara default, nama dari method alias ini adalah alias:
Langkah selanjutnya adalah membuat sebuah method dengan nama alias maka controllernya menjadi:
Alias method bisa diimplementasikan pada controller utama, sub-controller ataupun controller yang ada di dalam sebuah module.
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 menambahkan sebuah folder di dalam folder controller app/Controllers/ sesuai dengan kebutuhan. Sub-controller ini nantinya juga akan bisa diakses melalui alamat url seperti berikut:
http://mysite.com/FolderName/ControllerName/MethodNmae
Yang perlu Anda perhatikan adalah nama namespace yang harus disesuaikan dengan nama folder. Misalnya Anda membuat folder dengan nama Blog dan class Posts, maka contoh kodenya adalah:
Anda juga bisa memanggil sebuah controller lain dari dalam sebuah controller dengan mengacu kepada namespace yang digunakan.
Berikut contoh cara penggunaannya. Pertama buat sebuah controller yang akan menjadi sub controller:
Berikutnya buat sebuah controller lainnya yang akan digunakan untuk memanggil controller di atas: