Yii2 Framework merupakan salah satu PHP Framework populer. Salah satu keunggulannya adalah mampu mempercepat waktu development, fitur-fitur yang bisa di-extend dan mendukung PHP modern. Pada slide ini kita akan belajar fundamentalnya terlebih dahulu, sebelum terjun membangun project.
4. Tentang Yii
● Salah satu PHP Framework untuk membangun aplikasi web modern
● Rilis versi 1 pada Desember 2008, dukungan hingga 31 Desember 2021
● Rilis versi 2 pada Mei 2013, dukungan hingga 31 Desember 2026
● Saat ini sedang dikembangkan versi 3 secara intensif
5. Mengapa Harus Yii2
● Waktu development yang singkat
● Tingkat keamanan tinggi
● Bisa di-extend dengan mudah dan selalu mengikuti PHP modern
● Instalasi mudah
● Performa dengan akselerasi tinggi
6. Prasyarat
● HTML (strong), CSS (medium), Javascript (basic)
● PHP Dasar (strong), PHP OOP (strong)
● SQL (strong)
● Membaca dokumentasi API dan Guide
https://www.yiiframework.com/doc/guide/2.0/en
https://www.yiiframework.com/doc/api/2.0
8. Instalasi Melalui Composer
● Terdapat 2 template aplikasi: basic dan advanced
● Basic terdiri dari 1 aplikasi, dengan belum terintegrasi database
● Advanced terdari 2 aplikasi yaitu backend dan frontend dan terintegrasi dengan
database secara langsung
● Jalankan perintah:
● Masuk ke directory myapp dengan perintah:
● Konfigurasi environment dengan menjalankan perintah diikuti dengan
sebagai lingkungan development. Ketik untuk melanjutkan.
● Buka browser di localhost/myapp/requirements.php untuk melihat persyaratan
minimal server terpenuhi
● Buka browser di localhost/myapp/frontend/web. Lakukan explorasi
10. Konsep MVC
● Populer dalam pemrograman web
● Mengelompokkan kode-kode sesuai dengan tujuannya yaitu Model, View,
Controller sehingga kode akan lebih rapi dan mudah terbaca
● Model = kode yang berkaitan dengan data
● Controller = kode yang berkaitan dengan logic / proses bisnis
● View = kode yang akan ditampilkan / dilihat oleh user (html)
13. ● Backend : source code untuk backend
● Common : source code yang dipakai bersama antara backend dan frontend
● Console : source code untuk aplikasi console / terminal (jarang diubah)
● Environments : template ketika akan memilih environments (tidak diubah)
● Frontend : source code untuk frontend
● Vagrant : template deploy/distribusi source code/aplikasi menggunakan vagrant
(tidak diubah)
● Vendor : library pihak ketiga hasil menggunakan composer.json (DILARANG
DIUBAH)
Struktur Folder Yii2 (template advanced)
14. Struktur Folder Yii2 (frontend)
● Assets : asset bundle, mendaftarkan aset css dan js yang akan dilibatkan dalam
aplikasi
● Config : file-file konfigurasi level frontend
● Controllers : file-file controller
● Models : file-file model
● Runtime : file-file yang akan di-generate oleh yii (DILARANG DIUBAH)
● Test : file-file untuk unit testing / automated test
● Views : file-file view
● Web : file-file yang diakses oleh webdoc / entry script
15. Jenis-jenis Config
● main-local.php : hasil config setelah generate environment, tidak untuk
dimasukkan dalam git dan biasanya berisi data sensitif seperti db,
cookieValidationKey dll, dan juga config untuk environment dev
● main.php : config utama, berisi component dan fitur-fitur apa saja yang diaktifkan
● bootstrap.php : fitur yang otomatis dijalankan
● params.php : berisi parameter, berupa key => value
16. Membuat actionCoba pada SiteController
● Membuat sebuah Action dengan nama , pada file SiteController yang
berfungsi untuk menampilkan variabel
● Buka browser localhost/myapp/frontend/web/index.php?r=site/coba
17. Melewatkan parameter ke View
● Cara sebelumnya tidak dianjurkan karena pola MVC tidak diterapkan
● Controller seharusnya tidak langsung menampilkan output, tetapi harus melalui
view
● Buat file view baru pada frontend/views/site/coba.php. Isikan kode berikut
● Ganti actionCoba pada SiteController.php menjadi berikut
18. Melewatkan banyak parameter ke View
● Anda bisa menambah parameter berapapun, dan bertipe apapun.
controllers/SiteController.php: views/site/coba.php :
20. Membuat Kolom Komentar
● Membuat kolom komentar, yang terdiri dari 2 form, yaitu text input Nama dan
Komentar
● Nama dan Komentar wajib diisi
● Setelah di klik submit, maka akan menampilkan nama dan komentar yang ditulis
pada form sebelumnya
● Tidak terhubung ke database
21. Tahapan
1. Membuat model sebagai perwakilan data nama dan komentar
2. Membuat controller, yang akan menghubungkan model
3. Membuat view, yang berupa form kosong dan output hasil jika sudah submit.
22. Membuat model Komentar.php
● Buat file pada
frontendmodelsKomentar.php
● Method rules berisi aturan property dari
model, berisi class dari validators.
● https://www.yiiframework.com/doc/guide/
2.0/en/tutorial-core-validators
27. Routing dan URL
● Routing sederhananya adalah mekanisme navigasi antar halaman
● Ketika user memasukkan alamat atau klik sebuah link/url, yii2 akan memparsing
url tersebut, kemudian akan mencari controller/action yang sesuai
url.php
29. Konfigurasi Url
● Yii2 menyediakan konfigurasi url mulai dari sederhana hingga kompleks
● Konfigurasi Url menggunakan class UrlManager, terletak pada file config
● Config yang bisa dilakukan seperti
○ Menghilangkan index.php dari url
○ Mengaktifkan pretty Url
○ Menambah suffix .html pada url
○ Membuat rule untuk Url
○ Mengganti defaultRoute
○ Menangkap semua Url ke satu action, misal ketika maintenance web
30. Menghilangkan index.php dan Mengaktifkan Pretty Url
● Buka frontendconfigmain.php, pada key Components > UrlManager, hapus komentar
● Tambahkan file .htaccess pada frontendweb.htaccess
31. Mengganti defaultRoute, dan menangkap semua Url
● Terletak pada key root, tambahkan key defaultRoute dan valuenya
● Menangkap semua Url dengan key catchAll dan valuenya
● Jangan lupa membuat actionOffline dan view offline!
33. Membuat url rules
● Url untuk signup terletak di site/signup. Akan lebih elegan jika diringkas menjadi
signup saja. Demikian pula untuk login
● Menyembunyikan parameter dalam url, yang awalnya site/post-viewt?id=100
menjadi site/post-view/100
35. Mengapa migration?
● Selama ini kita membuat skema database menggunakan file .sql
● Migration merupakan standar framework modern, dimana membuat skema
database tidak melalui file .sql tetapi melalui command dalam framework tersebut
● Bermanfaat untuk menjadikan migration bisa untuk dilakukan version control.
● Sebelum melakukan migration, pastikan konfigurasi db sudah diset pada
commonconfigmain-local.php. Selanjutnya create db di phpmyadmin
36. Mendesain tabel siswa
● Yii2 menggunakan standarisasi untuk primary key tiap tabel menggunakan nama
field id, auto increment
No Nama Field Tipe Data Tambahan
1 id integer PRIMARY KEY, AUTO INCREMENT, NOT NULL
2 nis integer NOT NULL
3 nama varchar(255) NOT NULL
4 alamat varchar(255) NOT NULL
5 tanggal_lahir date
37. Membuat Tabel Siswa dengan Migration
● Jalankan perintah dibawah di terminal: , kemudian jawab yes
● File migration akan terbentuk di consolemigrations
● Aturan tipe fields yang lain: dateTime, boolean, float, money, bigInteger, binary,
char, decimal, double, text, time, timeStamp
● https://www.yiiframework.com/doc/api/2.0/yii-db-migration
● Untuk apply migration jalankan perintah dibawah: , kemudian jawab yes
38. Menambahkan User Admin ketika Migration
● Untuk melakukan insert data, tidak bisa dilakukan melalui command, tetapi dengan
menambahkan kode di file hasil migration, pada fungsi up() atau safeUp()
● Buka file migration create_user_admin, tambahkan baris berikut pada safeUp()
39. Mengubah Tabel Siswa dengan Menambah Field Baru
● Dibiasakan dalam membuat tabel, selalu ada created_at, updated_at, updated_by,
created_by
● Hal ini sebagai log seorang programmer mengetahui kapan data itu diinsert, dan
siapa yang menambah atau mengubah data tersebut
● Format sintaks
● Perintahnya:
● Lakukan perintah
41. Mengapa Gii
● Gii merupakan fitur code generator, sehingga kita tidak perlu membuat source
code untuk MVC dari awal
● Fitur idaman para programmer, karena bisa mempersingkat waktu development
● Tetap memerlukan modifikasi dari hasi generator
● Fitur Gii:
○ Model Generator
○ Controller Generator
○ CRUD Generator
○ Module Generator
○ Form Generator
○ Extensions Generator
● Fitur yang paling sering digunakan adalah Model Generator dan CRUD
Generator
42. Membuat Model Tabel Siswa
● Buka localhost/myapp/frontend/web/gii
● Pilih Model Generator, klik Start
● Isikan
○ Table : tbl_siswa
○ Model Class Name: Siswa
○ Namespace: frontendmodels
○ Use table prefix: centang
○ Isian yang lain biarkan apa adanya
○ Klik Preview
○ Klik Generate
43. Membuat CRUD Tabel Siswa
● Masuk ke Gii, Pilh CRUD Generator
● Isikan:
○ Model Class : frontendmodelsSiswa
○ Model Search Class : frontendmodelsSiswaSearch
○ Controller Class : frontendcontrollersSiswaController
○ Enable i18n : centang
○ Enable Pjax : centang
○ Isian lainnya biarkan apa adanya
● Klik Preview, Klik Generate.
● Akan muncul eror, jangan khawatir.
44. Membuat CRUD Tabel Siswa
● Buka modelsSiswa.php
● Tambahkan baris
● Refresh kembali pada halaman yang eror tadi,
dan kirim kembali form isian.
● Selanjutnya klik Generate
● Hasil generate bisa dibuka di alamat
localhost/myapp/frontend/web/siswa
● Coba lakukan tambah data siswa.
● Tampak tidak praktis karena harus mengisi
created_at, updated_at, created_by, dan
updated_by
45. Memodifikasi CRUD Tabel Siswa
● Created_at, updated_at, created_by dan updated_by seharusnya bekerja secara
mandiri, tanpa perlu dimasukkan oleh user secara manual
● Eksplorasi terlebih dahulu source code CRUD, dimana form ditampilkan.
● Buka viewssiswa_form.php
● Hapus atau beri komen untuk created_at, updated_at, created_by, updated_by
46. Menambahkan behavior pada model class Siswa.php
● Yii2 menyediakan class
behaviors, yang mana ia akan
ditrigger pada keadaan tertentu
● Kita bisa menambahkan
BlameableBehavior dan
TimestampBehavior
● Buka
frontendmodelsSiswa.php,
tambahkan kode berikut
● Coba lakukan insert data
47. Create Data
● Masukkan data siswa
○ Nis : 1001
○ Nama : Agus
○ Alamat : Jepara
○ Tanggal Lahir : 2000-10-08
● Cek ke siswa/view?id=1, bisa dilihat created_by, dan updated_by kosong.
● BlameableBehavior akan otomatis mengambil id user yang sedang login, sedangkan saat ini
kita mengakses sebagai guest. Lakukan login dengan user admin password qwerty123456
● Masukkan data siswa, Budi dengan isian yang lain dilengkapi.
● Bisa dilihat created_by dan updated_by sekarang terisi
48. Materi Berikutnya
● Access Filter dan Role Based Access Control
● Yii2 Extensions dan PHP Library
● Html Helper dan Array Helper
● ActiveRecord Fundamental
● GridView Widget