Panduan Pengguna Seme Framework mengenal konfigurasi controller

Meskipun pengaturan ini tidak wajib, tapi ini bermanfaat untuk membuat url request dengan seo friendly.
33  
       

Didalam SEME Framework, ada pengaturan untuk controller. Pengaturan controller ini berguna untuk menimpa (overiding) request url yang ada untuk dialihkan secara paksa untuk menuju controller dan metode tertentu. Merubah pengaturan ini termasuk kedalam pengaturan yang tidak wajib.

Lokasi Pengaturan

Jika mencari lokasi file untuk melakukan pengaturan contoller-nya, maka file-nya dapat ditemukan di dalam folder app/config/ dengan nama controller.php.

Isi Default

Berikut ini adalah isi default dari file controller.php

//default filename on app/controller/ 
$default_controller='home'; 
//notfound controller 
$notfound_controller='notfound'; 

//override default routing 
//make sure dont add any traing slash in array key of routes 
//override dynamic request 
//example $routes['produk/(:any)'] = 'produk/detail/index/$1'; 
//example $routes['blog/id/(:num)/(:any)'] = 'blog/detail/index/$1/$2'; 
$routes['produk/(:any)'] = 'produk/detail/index/$1'; 
$routes['produk/detail/(:any)'] = 'produk/detail/index/$1'; 
//override static request 
$routes['dukungan/kebijakan-privasi'] = 'dukungan/kebijakan_privasi'; 
//$routes['produk/(:any)/(:any)'] = 'produk/detail/index/$1/$2'; 

 

Penjelasan $default_controller

Penjelasan untuk baris pertama $default_controller. $default_controller digunakan jika framework dieksekusi tanpa url selain dari kepanjangan subfoldernya. Misalkan contoh SEME Framework dipasang didalam domain http://travtou.com, maka jika kita buka http://travtou.com itu akan langsung mengarah kedalam nilai default yang ada didalam folder /app/controller. Dengan nilai dari variabel tersebut, SEME Framework akan mencari file dan nama kelas didalam folder tersebut. Nilai defaultnya adalah home. Jadi ketika http://travtou.com dieksekusi maka yang controller yang dipanggil adalah app/controller/home.php.

Ilustrasi Penggunaan $default_controller

Jika diisi dengan home maka dia akan langsung mencari file bernama home.php dengan nama kelas Home dari turunan kelas controller. Jika diisi dengan nilai index, maka dia akan langsung mencari file bernama index.php dengan nama kelas Index dari turunan kelas controller.

Penjelasan $notfound_controller

Sama seperti halnya default controller, notfound controller ini akan menggantikan jika url yang akan di request itu tidak ada. Jika kita menyimpan SEME Framework http://travtou.com/ dan kita akan menggunakan url sembarang seperti http://travtou.com/abcde123/asdasd/311ff jika controller dan method tersebut tidak ada didalam app/controller maka controller notfound akan dipanggil..

Ilustrasi Penggunaan $notfound_controller

Jika diisi dengan notfound maka dia akan langsung mencari file bernama notfound.php dengan nama kelas Notfound dari turunan kelas controller. Jika diisi dengan nilai error404, maka dia akan langsung mencari file bernama error404.php dengan nama kelas Error404 dari turunan kelas controller.

Menggunakan Pengaturan Controller Tingkat Lanjut

Menggunakan controller tingkat lanjut ini biasanya akan digunakan untuk mengganti request url yang statis ataupun dinamis. Dalam penggunaan ini kita akan memanfaatkan variabel $routes yang berjenis array of string.

URL Statis

Menggunakan url statis sebetulnya sebetulnya sangat mudah. Jika ada request ke kelas Perjanjian_Kerja sama harusnya dapat diakses melalui http://travtou.com/perjanjian_kerjasama. Namun, kita ingin mengganti underscore (_) dengan strip (-) supaya lebih SEO friendly. Maka, kita cukup menambahkan kunci didalam array $routes sebagai request yang baru dan nilai dari array $routes sebagai pengarah kedalam kelas dan atau method yang diinginkan. Untuk lebih jelasnya bisa kita lihat potongan kode dibawah ini.

...
$routes['perjanjian-kerjasama'] = 'perjanjian_kerjasama';

 

URL Dinamis

Sebetulnya sama seperti halnya didalam metode statis, namun perbedaan yang paling mencoloknya adalah penggunaan keyword (:num) dan (:any). Penggunaan (:num) itu adalah untuk merepresentasikan bahwa didalam request url itu harus berupa nomor. Jika bukan nomor, maka tidak akan diteruskan kedalam requestnya. Sementara, penggunaan (:any) adalah untuk menandakan minimal ada satu nomor atau huruf. Jika tidak ada maka tidak akan diteruskan ke controller yang dimaksud. Berikut ini adalah contoh kodenya

...
$routes['profile/id/(:num)'] = 'profile/detail/(:num)';

Didalam contoh yang ini, jika ada request http://travtou.com/profile/id/373 maka akan diteruskan ke controller profile dan metode detail dengan isi dari parametermya adalah 373.

...
$routes['artikel/(:any)'] = 'artikel/byslug/(:any)';

Didalam contoh yang ini, jika ada request http://travtou.com/artikel/jembatan-menuju-surga maka akan diteruskan ke controller artikel dan metode byslug dengan isi dari parametermya adalah jembatan-menuju-surga.

Dari pengaturan tersebut setidaknya kita mendapatkan gambaran bagaimana membuat website dengan custom url request sehingga mammpu mengakomodasi clean url atau SEO Friendly.

Demikian Semoga membantu.