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.

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)


1 komentar:

Diberdayakan oleh Blogger.