Dengan yii framework kita dapat dengan mudahnya membuat website penyingkat url/link (URL Shortener) layaknya bit.ly, s.id, gotos.id dan lain sebagainya. Anda cukup membuat file controller baru yang berfungsi untuk meneruskan (redirect) url alias ke url aslinya. Berikut caranya:
Install yii2 framework template basic
php composer.phar create-project yiisoft/yii2-app-basic shorten
Setelah yii2 terinstall, langkah selanjutnya adalah setting database. Silahkan lakukan settingan database sesuai dengan konfigurasi anda
Setting pretty URL
Langkah berikutnya adalah mengaktifkan pretty url dan sekaligus menambahkan rules untuk url alias
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'<alias:\w+>' => 'redirect/index'
],
],
Jangan lupa tambahkan file .htaccess
jika menggunakan apache
Menambahkan parameter aliasLength
Tambahkan parameter aliasLength
di file params.php
return [
'aliasLength' => 5,
];
Buat Controller baru
Selanjutnya adalah membuat file controller baru yang berfungsi untuk meneruskan/mengalihkan (redirect) url alias ke url aslinya. Dalam settingan rules dari pretty url diatas, alias dari url akan diteruskan ke route redirect/index
dengan parameter alias
. Oleh karena itu mari kita buat file baru dengan nama RedirectController yang isinya seperti dibawah ini
public function actionIndex($alias=null)
{
$link = Links::findOne(['alias' => $alias]);
if ($link == null) {
throw new NotFoundHttpException('The requested page does not exist.');
} else {
return $this->redirect($link->url_string);
}
}
Membuat tabel baru
Dari code diatas, terdapat pemanggilan file model Links, untuk itu mari kita buat tabel-nya lalu file model-nya. Untuk membuat tabel, kita akan gunakan migration, untuk itu ketikkan perintah berikut
php yii migrate/create links
Lalu isikan file links tersebut dengan code berikut
public $tableName = 'links';
public function safeUp()
{
$this->createTable($this->tableName, [
'id' => $this->primaryKey(),
'alias' => $this->string(25)->notNull()->unique(),
'url_string' => $this->string(255)->notNull()->unique(),
'created_at' => $this->integer(),
'created_by' => $this->integer(),
'updated_at' => $this->integer(),
'updated_by' => $this->integer(),
]);
}
public function safeDown()
{
$this->dropTable($this->tableName);
}
Lalu kemudian jalankan perintah berikut untuk meng-eksekusi file migration diatas.
php yii migrate/up

Setelah tabel links tercipta, silahkan generate file model, dan CRUD untuk tabel links tersebut menggunakan Gii.
Selanjutnya tambahkan code berikut di file model links.php untuk generate alias url.
public function beforeSave($insert)
{
if (!parent::beforeSave($insert)) {
return false;
}
if ($insert) {
$_randomSring = str_replace("-", "", Yii::$app->security->generateRandomString(Yii::$app->params['aliasLength']));
$this->alias = $this->alias == null ? $_randomSring : $this->alias;
}
return true;
}
Setelah langkah-langkah diatas dilakukan, silahkan dijalankan aplikasinya dan dicoba menambahkan record baru dilaman links.
Demikian artikel singkat ini, insyaallah bermanfaat bagi teman-teman semua.
About the author