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 dan Asset Bundle pada Yii2
  9. Alias pada Yii2
  10. Bekerja dengan Form
  11. Timestamp, Blameable, dan Sluggable Behavior pada Yii2
  12. Menggunakan Rich Text Input CkEditor dan Alternatifnya pada Yii2
  13. Gridview dan Listview
  14. SEO Friendly Url dengan slug
  15. Scenario pada Model Yii2
  16. Retrieve data pada Yii2
  17. Relasi Database pada Yii2
  18. Widget Kartik
  19. Select2 dengan Kartik Ekstension
  20. Dependent Dropdown pada Yii2
  21. Bekerja dengan Modals
  22. Membuat Costum Template untuk Gii
  23. Mengupload File
  24. Mengupload File dengan Kartik Widget
  25. Gridview atau Datatables?
  26. Session dan Cookie pada Yii2
  27. Menggunakan AdminLTE pada Yii2
  28. Membuat Themes pada Yii2
  29. Menggunakan GoogleMaps API pada Yii2
  30. Menggunakan Socket.io pada Yii2
  31. Handling Error
  32. Bekerja dengan AuthClient
  33. Menggunakan Amazon S3 pada Yii2
  34. Mengirim Email dengan Swiftmailer pada Yii2
  35. Middleware pada Yii2
  36. Mengenal RBAC pada Yii2
  37. Implementasi RBAC pada Yii2
  38. Notifikasi Real Time dengan Socket.io pada Yii2

Anda dapat mengunduh dan memantau progress dari series ini lewat repositori Github belajararief-yii2series. Silahkan bintangi (star) untuk dapat lebih mudah memantau perkembangan repositori.

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!