SlideShare a Scribd company logo
1 of 48
Download to read offline
Yii2 Framework Fundamentals
Akhmad Khanif Zyen
Outline
● Pendahuluan
● Arsitektur Yii2
● Simulasi MVC
● Routing dan Url
● Migration
● Code Generator Gii
Pendahuluan
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
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
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
Aplikasi yang dibutuhkan (Windows)
● XAMPP 7.4
● Composer
● VS Code
● Chrome
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
Arsitektur Yii2
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)
user
www.myapp.local/site/index
Model View
Controller
Entry script
Mengenal URL
localhost/myapp/frontend/web/index.php?r=site/index
hostname entry script
route
controller/action
● 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)
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
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
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
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
Melewatkan banyak parameter ke View
● Anda bisa menambah parameter berapapun, dan bertipe apapun.
controllers/SiteController.php: views/site/coba.php :
Simulasi MVC
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
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.
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
Membuat Controller di
frontendcontrollersKomentarController.php
Membuat View di frontendviewskomentarindex.php
Membuat View di
frontendviewskomentarindex-display.php
Routing dan URL
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
Routing dan URL
SiteController.php post.php post-view.php
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
Menghilangkan index.php dan Mengaktifkan Pretty Url
● Buka frontendconfigmain.php, pada key Components > UrlManager, hapus komentar
● Tambahkan file .htaccess pada frontendweb.htaccess
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!
Menambah Suffix .html atau yang lainnya
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
Migration
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
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
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
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()
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
Code Generator Gii
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
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
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.
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
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
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
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
Materi Berikutnya
● Access Filter dan Role Based Access Control
● Yii2 Extensions dan PHP Library
● Html Helper dan Array Helper
● ActiveRecord Fundamental
● GridView Widget

More Related Content

Similar to YII2-FUNDAMENTALS

Jamal aplikasicrud
Jamal aplikasicrudJamal aplikasicrud
Jamal aplikasicrudmales Aja
 
Tutorial ci
Tutorial ciTutorial ci
Tutorial ciWira Hul
 
Modul 05 Framework CodeIgniter.pdf
Modul 05 Framework CodeIgniter.pdfModul 05 Framework CodeIgniter.pdf
Modul 05 Framework CodeIgniter.pdfSetiya Nugroho
 
Membuat mvc framework sederhana dengan php
Membuat mvc framework sederhana dengan phpMembuat mvc framework sederhana dengan php
Membuat mvc framework sederhana dengan phpCahya Dwiana SN
 
Modul praktikum Pemrograman web Backend dengan Codeigniter dan LTE
Modul praktikum Pemrograman web Backend dengan Codeigniter dan LTEModul praktikum Pemrograman web Backend dengan Codeigniter dan LTE
Modul praktikum Pemrograman web Backend dengan Codeigniter dan LTEIgun
 
Workshop SuBali - CodeIgniter
Workshop SuBali - CodeIgniterWorkshop SuBali - CodeIgniter
Workshop SuBali - CodeIgniterAdi Setiawan
 
Modul 02 CRUD CI 3.pdf
Modul 02 CRUD CI 3.pdfModul 02 CRUD CI 3.pdf
Modul 02 CRUD CI 3.pdfSetiya Nugroho
 
Modul 02 CRUD CI 3.pdf
Modul 02 CRUD CI 3.pdfModul 02 CRUD CI 3.pdf
Modul 02 CRUD CI 3.pdfSetiya Nugroho
 
Asas cakephp-mvc
Asas cakephp-mvcAsas cakephp-mvc
Asas cakephp-mvckriptonium
 
Modul1 Penjelasan Mengenai Codeigniter
Modul1 Penjelasan Mengenai CodeigniterModul1 Penjelasan Mengenai Codeigniter
Modul1 Penjelasan Mengenai CodeigniterRiki Afriansyah
 
Belajar framework code igniter xii rpl
Belajar framework code igniter xii rplBelajar framework code igniter xii rpl
Belajar framework code igniter xii rplDenny Yahya
 
Tutorial web service (web & client) with spring web services
Tutorial web service (web & client) with spring web servicesTutorial web service (web & client) with spring web services
Tutorial web service (web & client) with spring web servicesmuhammad arif nasution
 
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)riarel
 
Belajar php-dengan-framework-code-igniter1
Belajar php-dengan-framework-code-igniter1Belajar php-dengan-framework-code-igniter1
Belajar php-dengan-framework-code-igniter1Al-dhimas Purnama
 
Edwinprassetyo-1100631028-tugas1
Edwinprassetyo-1100631028-tugas1Edwinprassetyo-1100631028-tugas1
Edwinprassetyo-1100631028-tugas1Edwin Prassetyo
 
Wawan tutorial-zend-bagian-1-3
Wawan tutorial-zend-bagian-1-3Wawan tutorial-zend-bagian-1-3
Wawan tutorial-zend-bagian-1-3Haswi Haswi
 
Aitindo Sharing Session
Aitindo Sharing SessionAitindo Sharing Session
Aitindo Sharing SessionSandi Rosyandi
 
Belajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniterBelajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniterGeorge Kartutu
 

Similar to YII2-FUNDAMENTALS (20)

Jamal aplikasicrud
Jamal aplikasicrudJamal aplikasicrud
Jamal aplikasicrud
 
Tutorial ci
Tutorial ciTutorial ci
Tutorial ci
 
Tutorial ci
Tutorial ciTutorial ci
Tutorial ci
 
Modul 05 Framework CodeIgniter.pdf
Modul 05 Framework CodeIgniter.pdfModul 05 Framework CodeIgniter.pdf
Modul 05 Framework CodeIgniter.pdf
 
Membuat mvc framework sederhana dengan php
Membuat mvc framework sederhana dengan phpMembuat mvc framework sederhana dengan php
Membuat mvc framework sederhana dengan php
 
Modul praktikum Pemrograman web Backend dengan Codeigniter dan LTE
Modul praktikum Pemrograman web Backend dengan Codeigniter dan LTEModul praktikum Pemrograman web Backend dengan Codeigniter dan LTE
Modul praktikum Pemrograman web Backend dengan Codeigniter dan LTE
 
Workshop SuBali - CodeIgniter
Workshop SuBali - CodeIgniterWorkshop SuBali - CodeIgniter
Workshop SuBali - CodeIgniter
 
Modul 02 CRUD CI 3.pdf
Modul 02 CRUD CI 3.pdfModul 02 CRUD CI 3.pdf
Modul 02 CRUD CI 3.pdf
 
Modul 02 CRUD CI 3.pdf
Modul 02 CRUD CI 3.pdfModul 02 CRUD CI 3.pdf
Modul 02 CRUD CI 3.pdf
 
Asas cakephp-mvc
Asas cakephp-mvcAsas cakephp-mvc
Asas cakephp-mvc
 
Modul1 Penjelasan Mengenai Codeigniter
Modul1 Penjelasan Mengenai CodeigniterModul1 Penjelasan Mengenai Codeigniter
Modul1 Penjelasan Mengenai Codeigniter
 
Belajar framework code igniter xii rpl
Belajar framework code igniter xii rplBelajar framework code igniter xii rpl
Belajar framework code igniter xii rpl
 
Tutorial web service (web & client) with spring web services
Tutorial web service (web & client) with spring web servicesTutorial web service (web & client) with spring web services
Tutorial web service (web & client) with spring web services
 
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
Belajar Framework CodeIgnitier Lengkap (bahasa Indonesia)
 
Belajar php-dengan-framework-code-igniter1
Belajar php-dengan-framework-code-igniter1Belajar php-dengan-framework-code-igniter1
Belajar php-dengan-framework-code-igniter1
 
Kelompok 7
Kelompok 7Kelompok 7
Kelompok 7
 
Edwinprassetyo-1100631028-tugas1
Edwinprassetyo-1100631028-tugas1Edwinprassetyo-1100631028-tugas1
Edwinprassetyo-1100631028-tugas1
 
Wawan tutorial-zend-bagian-1-3
Wawan tutorial-zend-bagian-1-3Wawan tutorial-zend-bagian-1-3
Wawan tutorial-zend-bagian-1-3
 
Aitindo Sharing Session
Aitindo Sharing SessionAitindo Sharing Session
Aitindo Sharing Session
 
Belajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniterBelajar php-dengan-framework-code-igniter
Belajar php-dengan-framework-code-igniter
 

More from Akhmad Khanif Zyen

Pemrograman Mobile Pertemuan 1
Pemrograman Mobile Pertemuan 1Pemrograman Mobile Pertemuan 1
Pemrograman Mobile Pertemuan 1Akhmad Khanif Zyen
 
Pemrograman Mobile Unit 2 : Dasar-dasar Flutter
Pemrograman Mobile Unit 2 : Dasar-dasar FlutterPemrograman Mobile Unit 2 : Dasar-dasar Flutter
Pemrograman Mobile Unit 2 : Dasar-dasar FlutterAkhmad Khanif Zyen
 
Pemrograman Mobile Unit 1 : Perkenalan
Pemrograman Mobile Unit 1 : PerkenalanPemrograman Mobile Unit 1 : Perkenalan
Pemrograman Mobile Unit 1 : PerkenalanAkhmad Khanif Zyen
 
Mobile Application 2 Pertemuan 5 Dasar Kotlin OOP Nested Class and Packages
Mobile Application 2 Pertemuan 5 Dasar Kotlin OOP Nested Class and PackagesMobile Application 2 Pertemuan 5 Dasar Kotlin OOP Nested Class and Packages
Mobile Application 2 Pertemuan 5 Dasar Kotlin OOP Nested Class and PackagesAkhmad Khanif Zyen
 
Mobile Application 2 Pertemuan 4 Dasar Kotlin OOP Polymorphism
Mobile Application 2 Pertemuan 4 Dasar Kotlin OOP PolymorphismMobile Application 2 Pertemuan 4 Dasar Kotlin OOP Polymorphism
Mobile Application 2 Pertemuan 4 Dasar Kotlin OOP PolymorphismAkhmad Khanif Zyen
 
Mobile Application 2 Pertemuan 3 Dasar Kotlin Object Oriented Programming
Mobile Application 2 Pertemuan 3 Dasar Kotlin Object Oriented ProgrammingMobile Application 2 Pertemuan 3 Dasar Kotlin Object Oriented Programming
Mobile Application 2 Pertemuan 3 Dasar Kotlin Object Oriented ProgrammingAkhmad Khanif Zyen
 
Mobile Application 2 Pertemuan 2 Dasar Kotlin Loop Control, Collection dan Fu...
Mobile Application 2 Pertemuan 2 Dasar Kotlin Loop Control, Collection dan Fu...Mobile Application 2 Pertemuan 2 Dasar Kotlin Loop Control, Collection dan Fu...
Mobile Application 2 Pertemuan 2 Dasar Kotlin Loop Control, Collection dan Fu...Akhmad Khanif Zyen
 
Mobile Application 2 Pertemuan 1 Pengantar Kotlin
Mobile Application 2 Pertemuan 1 Pengantar KotlinMobile Application 2 Pertemuan 1 Pengantar Kotlin
Mobile Application 2 Pertemuan 1 Pengantar KotlinAkhmad Khanif Zyen
 
Surat keterangan garansi software
Surat keterangan garansi softwareSurat keterangan garansi software
Surat keterangan garansi softwareAkhmad Khanif Zyen
 
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework Bagian 3
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework Bagian 3Membuat Aplikasi Kesiswaan Menggunakan Yii Framework Bagian 3
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework Bagian 3Akhmad Khanif Zyen
 
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework - Bagian 2
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework - Bagian 2Membuat Aplikasi Kesiswaan Menggunakan Yii Framework - Bagian 2
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework - Bagian 2Akhmad Khanif Zyen
 
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework - Bagian 1
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework - Bagian 1Membuat Aplikasi Kesiswaan Menggunakan Yii Framework - Bagian 1
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework - Bagian 1Akhmad Khanif Zyen
 

More from Akhmad Khanif Zyen (15)

Pemrograman Mobile Pertemuan 1
Pemrograman Mobile Pertemuan 1Pemrograman Mobile Pertemuan 1
Pemrograman Mobile Pertemuan 1
 
Pemrograman Mobile Unit 2 : Dasar-dasar Flutter
Pemrograman Mobile Unit 2 : Dasar-dasar FlutterPemrograman Mobile Unit 2 : Dasar-dasar Flutter
Pemrograman Mobile Unit 2 : Dasar-dasar Flutter
 
Pemrograman Mobile Unit 1 : Perkenalan
Pemrograman Mobile Unit 1 : PerkenalanPemrograman Mobile Unit 1 : Perkenalan
Pemrograman Mobile Unit 1 : Perkenalan
 
Mobile app syllabus 2019
Mobile app syllabus 2019Mobile app syllabus 2019
Mobile app syllabus 2019
 
Mobile Application 2 Pertemuan 5 Dasar Kotlin OOP Nested Class and Packages
Mobile Application 2 Pertemuan 5 Dasar Kotlin OOP Nested Class and PackagesMobile Application 2 Pertemuan 5 Dasar Kotlin OOP Nested Class and Packages
Mobile Application 2 Pertemuan 5 Dasar Kotlin OOP Nested Class and Packages
 
Mobile Application 2 Pertemuan 4 Dasar Kotlin OOP Polymorphism
Mobile Application 2 Pertemuan 4 Dasar Kotlin OOP PolymorphismMobile Application 2 Pertemuan 4 Dasar Kotlin OOP Polymorphism
Mobile Application 2 Pertemuan 4 Dasar Kotlin OOP Polymorphism
 
Mobile Application 2 Pertemuan 3 Dasar Kotlin Object Oriented Programming
Mobile Application 2 Pertemuan 3 Dasar Kotlin Object Oriented ProgrammingMobile Application 2 Pertemuan 3 Dasar Kotlin Object Oriented Programming
Mobile Application 2 Pertemuan 3 Dasar Kotlin Object Oriented Programming
 
Mobile Application 2 Pertemuan 2 Dasar Kotlin Loop Control, Collection dan Fu...
Mobile Application 2 Pertemuan 2 Dasar Kotlin Loop Control, Collection dan Fu...Mobile Application 2 Pertemuan 2 Dasar Kotlin Loop Control, Collection dan Fu...
Mobile Application 2 Pertemuan 2 Dasar Kotlin Loop Control, Collection dan Fu...
 
Mobile Application 2 Pertemuan 1 Pengantar Kotlin
Mobile Application 2 Pertemuan 1 Pengantar KotlinMobile Application 2 Pertemuan 1 Pengantar Kotlin
Mobile Application 2 Pertemuan 1 Pengantar Kotlin
 
Filosofi belajar abad 21
Filosofi belajar abad 21Filosofi belajar abad 21
Filosofi belajar abad 21
 
Perintah dasar Linux
Perintah dasar LinuxPerintah dasar Linux
Perintah dasar Linux
 
Surat keterangan garansi software
Surat keterangan garansi softwareSurat keterangan garansi software
Surat keterangan garansi software
 
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework Bagian 3
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework Bagian 3Membuat Aplikasi Kesiswaan Menggunakan Yii Framework Bagian 3
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework Bagian 3
 
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework - Bagian 2
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework - Bagian 2Membuat Aplikasi Kesiswaan Menggunakan Yii Framework - Bagian 2
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework - Bagian 2
 
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework - Bagian 1
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework - Bagian 1Membuat Aplikasi Kesiswaan Menggunakan Yii Framework - Bagian 1
Membuat Aplikasi Kesiswaan Menggunakan Yii Framework - Bagian 1
 

YII2-FUNDAMENTALS

  • 2. Outline ● Pendahuluan ● Arsitektur Yii2 ● Simulasi MVC ● Routing dan Url ● Migration ● Code Generator Gii
  • 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
  • 7. Aplikasi yang dibutuhkan (Windows) ● XAMPP 7.4 ● Composer ● VS Code ● Chrome
  • 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
  • 24. Membuat View di frontendviewskomentarindex.php
  • 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
  • 28. Routing dan URL SiteController.php post.php post-view.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!
  • 32. Menambah Suffix .html atau yang lainnya
  • 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