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.
- Prainstalasi
- Instalasi YiiFramework 2.0
- Login
- Login dengan Database pada Yii2
- Bekerja dengan Gii
- Module pada Yii2
- Layout dasar dan Manipulasinya pada Yii2
- Costum Asset dan Asset Bundle pada Yii2
- Alias pada Yii2
- Bekerja dengan Form
- Timestamp, Blameable, dan Sluggable Behavior pada Yii2
- Menggunakan Rich Text Input CkEditor dan Alternatifnya pada Yii2
- Gridview dan Listview
- SEO Friendly Url dengan slug
- Scenario pada Model Yii2
- Retrieve data pada Yii2
- Relasi Database pada Yii2
- Menggunakan Bootstrap4
- Widget Kartik dan Kartik Gridview
- Select2 dengan Kartik Ekstension
- Dependent Dropdown pada Yii2
- Bekerja dengan Modals
- Membuat Costum Template untuk Gii
- Mengupload File
- Mengupload File dengan Kartik Widget
- Gridview atau Datatables?
- Session dan Cookie pada Yii2
- Menggunakan AdminLTE pada Yii2
- Membuat Themes pada Yii2
- Menggunakan GoogleMaps API pada Yii2
- Menggunakan Socket.io pada Yii2
- Handling Error
- Bekerja dengan AuthClient
- Menggunakan Amazon S3 pada Yii2
- Mengirim Email dengan Swiftmailer pada Yii2
- Middleware pada Yii2
- Mengenal RBAC pada Yii2
- Implementasi RBAC pada Yii2
- 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:
- 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.
- Stack yang digunakan adalah Wamp Server (Apache 2.2, MySQL, PHP 7).
- 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.
- Module Class =
app\modules\administrator\administrator
- 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.
- Model:
app\models\Blog
- Search Model:
app\modules\administrator\models\BlogSearch
- Controller:
app\modules\administrator\controllers\BlogController
- View:
@app/modules/administrator/views/blog
- 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!