Menggunakan URL Manager Di YII Framework
Pada umumnya orang yang menggunakan Yii Framework pasti akan menemukan kendala berupa URL yang tidak begitu bagus. Contohnya saja, untuk halaman sign-in, URL yang ditampilkan adalah www.websiteku.com/index.php?r=site/login. Bagi sebagian besar orang awam, tampilan URL ini tidak begitu normal. Dan bagi pemilik Web, URL demikian tidak akan disukai mesin pencari, alias tidak SEO-friendly.
Oleh karena itu, Yii Framework dirancang supaya apabila perlu mengubah URL-nya menjadi lebih ciamik, dapat dilakukan dengan gampang. Dengan menggunakan kelas CUrlManager kita dapat membuat jenis URL apapun yang diinginkan kita. Tetapi dalam artikel ini kita akan membahas teknik paling dasar untuk mengubah URL saja.
Cukup hilangkan comment, maka URL akan langsung berubah. Jika hanya sekadar mengubah lebih rapi, maka pekerjaan Anda sampai sini sudah selesai. Tetapi masalahnya umumnya kita harus menguba bentuk URL yang lebih rumit sesuai kebutuhan klien Oleh karena itu, dalam artikel ini akan diajarkan bagaimana membuat rule sendiri.
Kemudian tambahkan file .htaccess pada root direktori aplikasi dan isi seperti berikut:
Penjelasannya begini. Biasanya untuk mengakses login kita akses dengan www.websiteku.com/index.php?r=site/login. Jadi di bagian kanan, kita tulis bentuk pada biasanya, yakni “site/login”. Lalu karena kita ingin halaman login bisa dibuka dengan www.websiteku.com/sign-in, maka di sebelah kiri cukup masukkan “sign-in”.
Anda bisa memasukkan satu per satu jika Anda mau. Tetapi masalahnya halaman Web kadang bisa sangat banyak. Akan sangat merepotkan jika menulis rule satu per satu.
Jadi terkadang kita perlu sesuatu yang lebih fleksibel. Contohnya, seperti kasus di bawah ini:
www.websiteku.com/index.php?r=site/signup berubah menjadi www.websiteku.com/signup
www.websiteku.com/index.php?r=site/contact berubah menjadi www.websiteku.com/contact dan seterusnya.
Kita bisa menulis sintaks begini:
Sesuai peraturan sebelumnya. Di sebelah kanan merupakan bentuk URL biasanya. Karena biasanya kita mengakses dengan menulis www.websiteku.com/index.php?r=site/halaman1 atau index.php?r=site/halaman2 dan seterusnya, maka kita pasang yang berubah-berubah itu dengan tanda kurung siku. Pada contoh atas, penulis menggunakan “<nama>“. Pemberian nama terserah asal alfabet.
Kita ingin URL baru menjadi www.websiteku.com/halaman1 atau www.websiteku.com/halaman2 dan seterusnya. Jadi kita cukup tulis “<nama>” pada sebelah kiri. Ingat, jika sebelah kanan menggunakan “<nama>” maka kiri harus sama. Jadi kalau di kanan ditulis “<blabla>” maka sebelah kiri ditulis “<blabla>” juga.
Mungkin ada satu pertanyaan yang terbesit di dalam pikiran, bagaimana jika ada perkecualian? Maksudnya begini. Tadi kita sudah membuat aturan supaya semua halaman yang ber-URL www.websiteku.com/index.php?r=site/xyz akan menjadi www.websiteku.com/xyz, tetapi untuk URL www.websiteku.com/index.php?r=site/login justru ingin diubah menjadi www.websiteku.com/sign-in. Bagaimana dong?
Untuk ini kita cukup tulis begini saja:
Nah! Dua aturan ini, harus diperhatikan urutannya. Yii membaca aturan dari paling atas ke bawah. Ketika aturan pertama sudah memenuhi syarat, Yii tidak akan membaca URL di bawah lagi. Itu sebabnya mengapa kita harus menaruh ‘sign-in’=> ‘site/login’ di atas. Jika tidak percaya, silahkan tukar posisi ‘sign-in’ => ‘site/login’ dengan ‘<nama>’=>’site/<nama>’. Anda akan mengetahui maksudnya.
Hasil (Sedikit Edit) dari :
http://www.computesta.com/blog/2012/05/yii-tutorial-mengubah-url-jadi-lebih-cantik/#.Uw5B25Zty1E
(silakan kunjungi situs pembuat artikelnya untuk info lebih detail)
Oleh karena itu, Yii Framework dirancang supaya apabila perlu mengubah URL-nya menjadi lebih ciamik, dapat dilakukan dengan gampang. Dengan menggunakan kelas CUrlManager kita dapat membuat jenis URL apapun yang diinginkan kita. Tetapi dalam artikel ini kita akan membahas teknik paling dasar untuk mengubah URL saja.
1. Mengaktifkan Url Manager
Untuk mengaktifkan URL supaya lebih rapi cukup buka file di protected/config/main.php lalu cari bagian yang tertulis// uncomment the following to enable URLs in path-format /* 'urlManager'=>array( 'urlFormat'=>'path', 'rules'=>array( '<controller:\w+>/<id:\d+>'=>'<controller>/view', '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', '<controller:\w+>/<action:\w+>'=>'<controller>/<action>', ), ), */
Cukup hilangkan comment, maka URL akan langsung berubah. Jika hanya sekadar mengubah lebih rapi, maka pekerjaan Anda sampai sini sudah selesai. Tetapi masalahnya umumnya kita harus menguba bentuk URL yang lebih rumit sesuai kebutuhan klien Oleh karena itu, dalam artikel ini akan diajarkan bagaimana membuat rule sendiri.
2. Menghilangkan Tulisan index.php
Pertama-tama, mungkin Anda akan sangat ingin menghilangkan tulisan “index.php” dari URL. Untuk itu Anda cukup tambahkan'urlManager'=>array( 'urlFormat'=>'path', 'showScriptName'=>false, 'rules'=>array( .... ), ),
Kemudian tambahkan file .htaccess pada root direktori aplikasi dan isi seperti berikut:
RewriteEngine on # if a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward it to index.php RewriteRule . index.php
3. Cara Menulis Aturan URL Manager
Misalnya, Anda ingin membuat halaman login dapat diakses dengan URL www.websiteku.com/sign-in. Maka Anda cukup menulis begini'urlManager'=>array( 'urlFormat'=>'path', 'rules'=>array( 'sign-in' => 'site/login', ), ),
Penjelasannya begini. Biasanya untuk mengakses login kita akses dengan www.websiteku.com/index.php?r=site/login. Jadi di bagian kanan, kita tulis bentuk pada biasanya, yakni “site/login”. Lalu karena kita ingin halaman login bisa dibuka dengan www.websiteku.com/sign-in, maka di sebelah kiri cukup masukkan “sign-in”.
Anda bisa memasukkan satu per satu jika Anda mau. Tetapi masalahnya halaman Web kadang bisa sangat banyak. Akan sangat merepotkan jika menulis rule satu per satu.
Jadi terkadang kita perlu sesuatu yang lebih fleksibel. Contohnya, seperti kasus di bawah ini:
www.websiteku.com/index.php?r=site/signup berubah menjadi www.websiteku.com/signup
www.websiteku.com/index.php?r=site/contact berubah menjadi www.websiteku.com/contact dan seterusnya.
Kita bisa menulis sintaks begini:
'urlManager'=>array( 'urlFormat'=>'path', 'rules'=>array( '<nama>'=>'site/<nama>', ), ),
Sesuai peraturan sebelumnya. Di sebelah kanan merupakan bentuk URL biasanya. Karena biasanya kita mengakses dengan menulis www.websiteku.com/index.php?r=site/halaman1 atau index.php?r=site/halaman2 dan seterusnya, maka kita pasang yang berubah-berubah itu dengan tanda kurung siku. Pada contoh atas, penulis menggunakan “<nama>“. Pemberian nama terserah asal alfabet.
Kita ingin URL baru menjadi www.websiteku.com/halaman1 atau www.websiteku.com/halaman2 dan seterusnya. Jadi kita cukup tulis “<nama>” pada sebelah kiri. Ingat, jika sebelah kanan menggunakan “<nama>” maka kiri harus sama. Jadi kalau di kanan ditulis “<blabla>” maka sebelah kiri ditulis “<blabla>” juga.
Mungkin ada satu pertanyaan yang terbesit di dalam pikiran, bagaimana jika ada perkecualian? Maksudnya begini. Tadi kita sudah membuat aturan supaya semua halaman yang ber-URL www.websiteku.com/index.php?r=site/xyz akan menjadi www.websiteku.com/xyz, tetapi untuk URL www.websiteku.com/index.php?r=site/login justru ingin diubah menjadi www.websiteku.com/sign-in. Bagaimana dong?
Untuk ini kita cukup tulis begini saja:
'urlManager'=>array( 'urlFormat'=>'path', 'rules'=>array( 'sign-in' => 'site/login', '<nama>'=>'site/<nama>', ), ),
Nah! Dua aturan ini, harus diperhatikan urutannya. Yii membaca aturan dari paling atas ke bawah. Ketika aturan pertama sudah memenuhi syarat, Yii tidak akan membaca URL di bawah lagi. Itu sebabnya mengapa kita harus menaruh ‘sign-in’=> ‘site/login’ di atas. Jika tidak percaya, silahkan tukar posisi ‘sign-in’ => ‘site/login’ dengan ‘<nama>’=>’site/<nama>’. Anda akan mengetahui maksudnya.
Hasil (Sedikit Edit) dari :
http://www.computesta.com/blog/2012/05/yii-tutorial-mengubah-url-jadi-lebih-cantik/#.Uw5B25Zty1E
(silakan kunjungi situs pembuat artikelnya untuk info lebih detail)
sip bosa, thanks.
BalasHapusahmad-shohibi.blogspot.com