Pada tulisan ini saya akan membuat series mengenai pemrograman dengan Yii Framework. Series ini akan disusun untuk membuat sebuah program sederhana yang memanfaatkan fitur-fitur umum yang sangat mungkin digunakan di banyak kasus. Tulisan ini akan menggunakan Basic Template Yii2 (yang menurut saya penggunaannya sedikit lebih sulit daripada advance template Yii2)

Secara garis besar (dan mungkin akan bertambah sesuai keperluan yang mungkin terjadi) outline dari seri tulisan ini akan terdiri dari hal berikut.

  1. Prainstalasi
  2. Instalasi YiiFramework 2.0
  3. Login
  4. Login dengan Database pada Yii2
  5. Bekerja dengan Gii
  6. Module pada Yii2
  7. Layout dasar dan Manipulasinya pada Yii2
  8. Costum Asset pada Yii2
  9. Mengenal AssetBundle
  10. Bekerja dengan Form
  11. Timestamp, Blameable, dan Sluggable Behavior pada Yii2
  12. Scenario pada Model Yii2
  13. Retrieve data pada Yii2
  14. Relasi Database pada Yii2
  15. Gridview dan Listview
  16. Widget Kartik
  17. Select2 dengan Kartik Ekstension
  18. Dependent Dropdown pada Yii2
  19. Bekerja dengan Modals
  20. Membuat Costum Template untuk Gii
  21. Mengupload File
  22. Mengupload File dengan Kartik Widget
  23. Menggunakan Rich Text Input CkEditor dan Alternatifnya pada Yii2
  24. Gridview atau Datatables?
  25. Session dan Cookie pada Yii2
  26. Menggunakan AdminLTE pada Yii2
  27. Membuat Themes pada Yii2
  28. Menggunakan GoogleMaps API pada Yii2
  29. Menggunakan Socket.io pada Yii2
  30. Handling Error
  31. Bekerja dengan AuthClient
  32. Menggunakan Amazon S3 pada Yii2
  33. Mengirim Email dengan Swiftmailer pada Yii2
  34. Middleware pada Yii2
  35. Mengenal RBAC pada Yii2
  36. Implementasi RBAC pada Yii2
  37. Notifikasi Real Time dengan Socket.io pada Yii2

Requirement

Untuk memudahkan anda dalam memahami petunjuk ini, maka beberapa hal yang perlu diperhatikan diantaranya:

  1. Sistem Operasi yang saya gunakan adalah Windows 10 64bit dengan terminal menggunakan powershell terminal (beberapa command seperti cd dapat berbeda dengan command prompt biasa), namun saya akan berusaha sebisa mungkin mencontohkan perintah pada sistem operasi lain jika memunkinkan.
  2. Stack yang digunakan adalah Wamp Server (Apache 2.2, MySQL, PHP 7).
  3. Yii yang digunakan adalah Yii 2.0 dengan catatan jquery yang digunakan bukan jquery3. Beberapa perintah jquery akan berbeda pada jquery3, dan beberapa extensions yang saya gunakan sepertinya belum mendukung jquery3

Mengenal Module pada Yii2

Pada Yii2 (dan juga Yii1) modul adalah unit perangkat lunkar mandiri yang terdiri dari model, view, controller, dan komponen pendukung aplikasi lainnya. Modul sering disebut sebagai mini aplikasi, dimana dalam modul memiliki MVC tersendiri dan tetap dapat menggunakan Class yang ada pada aplikasi di luar modul (maupun antar modul). Namun yang membedakan modul dengan aplikasi adalah modul tyda dapat berdiri sendiri, modul harus berada di dalam aplikasi untuk dapat digunakan.

Modul pada Yii2 kurang lebih memiliki fungsi yang sama dengan modul pada CodeIgniter dan CakePHP. Sehingga bagi anda yang baru bermigrasi dari dua framework tersebut tentu sudah familiar dengan pola pengembangan aplikasi dengan modul. Salah satu hal yang mengasikkan dalam pengembangan aplikasi dengan modul adalah setiap modul bisa mengekstend MVC utama, dan juga bisa mengekstend modul lain. Pola pengembangan yang biasa saya gunakan adalah tabel Model utama tetap di Models utama, sedangkan ketika pengembangan dibagi-bagi pada banyak programmer maka ketika ada penambahan fungsi di dalam model dapat langsung mengekstend model utama, tanpa harus mengubah model utama. Untuk pengembangan aplikasi keroyokan pengembangan dengan modul akan sangat mempermudah pengembangan aplikasi.

Struktur Modul

Seperti dijelaskan sebelumnya, modul berperan layaknya aplikasi mini yang memiliki model, view dan controller (MVC) sendiri. Struktur sebuah modul terdiri dari Class dari modul, DefaultController dari modul (yang dapat diakses melalui http://localhost/basic/web/nama_modul/ ) dan View dari DefaultController. Kurang lebih sebuah modul memiliki struktur seperti di bawah ini.

|administrator/
|----Module.php                   the module class file
|----controllers/                 containing controller class files
|--------DefaultController.php    the default controller class file
|----models/                      containing model class files
|----views/                       containing controller view and layout files
|--------layouts/                 containing layout view files
|--------default/                 containing view files for DefaultController
|------------index.php            the index view file

Dari struktur dapat anda lihat bahwa modul memiliki MVC sendiri dan anda juga dapat menambahkan layouts khusus untuk sebuah modul tertentu. 

Membuat Modul

Membuat modul pada Yii2 sangat mudah, karena kita bisa membuat modul dengan Gii yang akan langsung membuat struktur default dari modul. Anda perlu mengakses terlebih dahulu Gii kemudian pilih Module Generator.

Dalam tutorial ini kita akan membuat sebuah website blog yang memiliki modul administrator. Oleh karena itu modul yang akan kita buat bernama administrator. Isi informasi modul yang akan kita buat seperti di bawah ini.

  1. Module Class = app\modules\administrator\administrator
  2. Module Id= administrator

 Tekan tombol preview kemudian tekan tombol generate, kemudian anda akan diminta mengubah \app\config\web.php dengan menambahkan objek modul seperti berikut.

....

'modules' => [     
    'administrator' => [
        'class' => 'app\modules\administrator\administrator',
    ],
],

...

Setelah itu anda dapat membuat halaman default modul anda melalui laman http://localhost/basic/web/administrator/. Laman ini merupakan hasil dari DefaultController dan default/index.php.

Membuat CRUD atas Blog di Modul Administrator

Setelah membuat modul kita akan membuat CRUD operation atas tabel Blog di dalam modul administrator. Sehingga untuk manajemen blog hanya dapat dilakukan melalui modul administrator yang telah kita buat.  Anda perlu mengakses terlebih dahulu Gii kemudian pilih CRUD Generator.

Selanjutnya apabila model sudah terbentuk anda dapat mengenarate Crud melalui menu CRUD Generator, isi informasi berikut.

  1. Model: app\models\Blog
  2. Search Model: app\modules\administrator\models\BlogSearch
  3. Controller: app\modules\administrator\controllers\BlogController
  4. View: @app/modules/administrator/views/blog
  5. Pjax: Enable

Pada contoh di atas kita akan tetap menggunakan model utama aplikasi yaitu model Blog. Klik Preview kemudian generate Crud Generator. Maka Gii akan membuat Controller dan views baru berdasarkan konfigurasi yang anda buat. Namun jika anda perhatikan hasil generate dari Gii pada modul tidak membuat folder models. Sehingga anda harus membuat folder models secara manual terlebih dahulu baru dapat mengenerate CRUD tersebut. Setelah itu anda sudah bisa mengakses hasil dari CRUD Operation atas tabel blog melalui http://localhost/basic/web/administrator/blog pada address bar anda. 

Demikian tulisan mengenai modul pada Yii2, semoga bermanfaat dan Happy Coding!