Belajar Kode Program

Blog belajar menulis kode program dan aplikasi komputer

Sabtu, 14 Januari 2017

Memahami Routing pada Yii

Routing adalah salah satu konsep dasar dalam menguasai Yii2. Jika Anda sudah membaca artikel sebelumnya mengenai 5 Konsep Minimal Memahami Yii Framework, tentu sedikit banyak Anda sudah memahami hubungan suatu URL dengan controller. Baiklah, ambil contoh sebagai berikut. Misalkan ada URL http://localhost?r=data/penjual, berarti sintaks yang mana yang merujuk ke alamat tersebut? Betul, cobalah cek di file controllers/DataController.php pada bagian fungsi actionPenjual().


Konsep routing pada Yii cukup sederhana. Karena kesederhanaan ini tidak heran jika banyak programmer yang menyukainya. Kunci routing adalah di file-file controllernya dengan parameter default URL adalah variabel r. Misalnya localhost?r=gii dan sebagainya.

Rute Default

Yii sebenarnya memiliki rute default. Artinya, tanpa parameter apapun di URL yang akan dipanggil adalah fungsi pada rute default ini. Pada Yii, rute default bisa dimodifikasi pada file konfigurasi dengan menambahkan array berikut:

[
    // ...
    'defaultRoute' => 'main/index',
];

Ada kalanya kita menjadikan web kita dalam mode maintenans (pemeliharaan). Kita dapat memainkan konfigurasinya dengan menambahkan baris catchAll ini.

[
    // ...
    'catchAll' => ['site/offline'],
];

Memanggil Rute dengan Membuat URL

Konsep routing pada Yii memang sederhana sehingga untuk membahasnya tidak perlu penjelasan panjang lebar. Selanjutnya, yang tidak kalah penting adalah bagaimana membuat URL yang akan dibaca rutenya oleh Yii. Kita akan membutuhkan helper yang bernama Url (yii\helpers\Url). Kita langsung belajar dari contoh-contoh berikut ini:

use yii\helpers\Url;

// untuk membuat URL ke rute: /index.php?r=post%2Findex
echo Url::to(['post/index']);

// untuk membuat URL ke rute dengan parameter: /index.php?r=post%2Fview&id=100
echo Url::to(['post/view', 'id' => 100]);

// untuk membuat URL dengan jangkar atau anchor (#): /index.php?r=post%2Fview&id=100#content
echo Url::to(['post/view', 'id' => 100, '#' => 'content']);

// untuk membuat URL absolut (lengkap dengan alamat website): http://www.example.com/index.php?r=post%2Findex
echo Url::to(['post/index'], true);

// untuk membuat URL absolut dengan skema https: https://www.example.com/index.php?r=post%2Findex
echo Url::to(['post/index'], 'https');

Selanjutnya, URL juga bisa dibuat relatif dari konteksnya, tergantung pada module atau controller yang memanggil fungsi ini. Misalnya sintaks ini diterapkan pada module admin, controller post, dan action index (fungsi actionIndex()). Sintaksnya akan menjadi seperti ini:

use yii\helpers\Url;

// merujuk rute saat ini: /index.php?r=admin%2Fpost%2Findex
echo Url::to(['']);
//atau
echo Url::to();

// rute relatif dengan pada controller post: /index.php?r=admin%2Fpost%2Findex
echo Url::to(['index']);

// rute relatif pada controller post: /index.php?r=admin%2Fpost%2Findex
echo Url::to(['post/index']);

// rute absolut: /index.php?r=post%2Findex
echo Url::to(['/post/index']);

// penggunaan alias "@posts", yang sudah didefiniskan sebagai "/post/index": /index.php?r=post%2Findex
echo Url::to(['@posts']);

//atau
Yii::setAlias('@example', 'http://example.com/');
echo Url::to('@example');

// URL absolut: http://example.com/images/logo.gif
echo Url::to('/images/logo.gif', true);

Selain fungsi Url::to(), ada juga fungsi lain yang bermanfaat terkait dengan helper Url ini. Berikut beberapa sintaks yang akan banyak berguna nantinya.

use yii\helpers\Url;

// URL homepage (default route): /index.php?r=site%2Findex
echo Url::home();

// URL base, sangat berguna jika aplikasi diletakkan pada subfolder direktori root website kita
echo Url::base();

// Membuat URL kanonis (canonical URL) pada URL sekarang
// lihat apa itu URL kanonis di https://en.wikipedia.org/wiki/Canonical_link_element
echo Url::canonical();

// Menyimpan URL sekarang (remember) dan memanggil kemudian (previous)
Url::remember();
echo Url::previous();

Pada akhirnya, kita juga bisa memodifikasi sebuah URL yang tadinya menggunakan parameter ?r menjadi lebih baik. Caranya dengan mengatur konfigurasi UrlManager. Hasilnya akan tampak seperti contoh URL berikut:

/index.php?r=post%2Fview&id=100
/index.php/post/100
/posts/100

Tidak ada komentar:

Posting Komentar