Yii2, Membuat URL Shortener Kurang dari Lima Menit

ByYusuf Ayuba

Yii2, Membuat URL Shortener Kurang dari Lima Menit

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.

Demo

About the author

Yusuf Ayuba administrator

Leave a Reply

%d bloggers like this: