MODUL 6
Teknologi Framework dalam Aplikasi Web
A. Kompetensi Dasar
3.6 Menerapkan teknologi framework dalam aplikasi web
4.6 Membuat aplikasi web dengan teknologi framework
B. Tujuan Pembelajaran
1. Setelah mencermati materi di buku dan mengakses berbagai literatur, siswa
mampu menjelaskan tentang teknologi framework dengan baik.
2. Setelah mencermati materi di buku dan mengakses berbagai literatur, siswa
mampu menerapkan teknologi framework dalam aplikasi web dengan tepat.
3. Setelah berdiskusi dan meyimak penjelasan guru, siswa mampu merancang
program aplikasi web menggunakan teknologi framework dengan benar
4. Setelah menyimak beberapa contoh dan berlatih, siswa mampu membuat kode
program aplikasi web menggunakan framework dengan benar
5. Setelah berdiskusi dan menelaah berbagai informasi di buku dan literatur lainnya,
siswa mampu menguji program aplikasi web berbasis framework dengan baik
C. Teori
1. Konsep Teknologi Framework
Framework adalah kerangka kerja pemrograman yang mencakup library atau
perpustakaan kode, model perangkat lunak, Application Programming Interfaces
(APIs), dan berbagai elemen lain yang dapat mempermudah proses pemrograman.
Sebuah framework dapat digunakan untuk membangun sebuah aplikasi berbasis
website maupun perangkat lunak.
Arti framework bagi para programmer itu sangat penting, sebab kerangka kerja
tersebut membuat pekerjaan mereka tidak hanya menjadi lebih mudah, tetapi juga
lebih efisien. Mereka juga tidak perlu mengulang-ulang kode karena sudah ada
library yang sudah digunakan.
2. Fungsi Framework
Framework memiliki fungsi utama untuk memudahkan web developer dalam
membuat sebuah website. Selain itu, framework juga memiliki fungsi lain.
Berikut di antaranya:
3. Jenis-Jenis Framework
Ada banyak sekali framework yang bisa digunakan untuk pengembangan website
atau web development. Dimana beda bahasa pemrograman, beda pula jenis
framework yang harus Anda gunakan. Berikut contoh dari framework yang ada:
a. Framework PHP
PHP adalah bahasa pemrograman scripting yang biasa digunakan pada server-
side. Berikut adalah beberapa framework populer berbasis PHP:
- Laravel
Framework PHP terpopuler di dunia. Laravel mempunyai sintaks yang
elegan, rapi, dan ringkas.
- CodeIgniter
Sangat cocok bagi Anda yang baru belajar PHP framework. Sebab,
CodeIgniter mudah dipahami dan mempunyai dokumentasi lengkap.
- Symfony
Menawarkan fitur bundle dan komponen. Sehingga Anda bisa mengambil
sebagian fungsi PHP, atau keseluruhan secara langsung.
- Yii
Mempunyai konfigurasi cukup mudah dengan performa dan tingkat
keamanan yang baik.
- Zend
Cocok digunakan bagi Anda yang sudah mengerti dasar-dasar PHP.
Sebab, Zend digunakan untuk pengembangan website enterprise yang
kompleks.
- CakePHP
Menawarkan kumpulan library yang berisi banyak komponen. Bahkan
bisa dibilang komplit.
- Phalcon
Mempunyai performa yang lebih konsisten dibanding framework CSS
lain.
- FuelPHP
Framework PHP yang cukup ringan dan mendukung template parsing,
powerful ORN, dan fitur-fitur lainnya yang memudahkan Anda.
- Fat Free
Merupakan satu-satunya framework yang mengusung tema mikro.
Memiliki berbagai fitur seperti kompresi CSS, pemrosesan gambar,
validasi data, dan masih banyak lainnya.
- Aura
Mempunyai seperangkat libraries yang bisa Anda integrasikan dengan
project apapun. Selain itu, setiap librariesnya juga tidak memilikid
depencies sehingga sangat fleksibel.
b. Framework Javascript
Javascript merupakan salah satu bahasa pemrograman terpopuler dalam web
development. Bahasa ini digunakan untuk membuat tampilan halaman web
menjadi lebih interaktif. Berikut adalah beberapa framework berbasis
JavaScript yang ada:
- Vue.js
Walaupun terhitung pemain baru, Vue.js dengan cepat menjadi populer.
Selain ringan dengan ukuran hanya 58KB saja, Vue.js juga sangat
sederhana dan memiliki keamanan yang baik.
- React.js
Ringan dan sangat cocok digunakan untuk mengembangkan website
besar. Memiliki segudang fitur canggih seperti reusable component dan
declarative yang memudahkan Anda.
- Angular.js
Sangat direkomendasikan untuk pemula. Terutama bagi Anda yang ingin
mengembangkan website dengan konsep Rich Internet Application (RIA)
atau Single Page Application (SPA).
- Ember.js
Dikenal mempunyai kecepatan dan performa kodenya yang patut diacungi
jempol. Ember.js juga mempunyai banyak plugin yang bisa meningkatkan
kinerja lebih baik lagi.
- Backbone.js
Memiliki beberapa fitur menarik bagi developer. Salah satunya adalah
RESTful JSON yang memungkinan website Anda berkomunikasi dengan
bahasa pemrograman lainnya.
- Node.js
Framework yang memungkinan Anda menjalankan JavaScript dari server.
Node.js memiliki pustaka server sendiri sehingga Anda tak perlu
menggunakan program web server dari luar.
c. Framework CSS
CSS atau cascading style sheet adalah bahasa pemrograman yang digunakan
untuk menentukan dan memodifikasi tampilan sebuah halaman website.
Berikut adalah beberapa framework berbasis CSS yang bisa dicoba untuk
proyek Anda:
- Bootstrap
Merupakan framework CSS terpopuler. Menawarkan segudang fungsi
dengan elemen desain yang responsif. Plus, Bootstrap lah yang pertama
kali mempunyai filosofi “Mobile-First.”
- Foundation
Menggunakan sistem open-source berbasis SASS, Foundation
menawarkan elemen yang fleksibel, modern, dan kaya akan kustomisasi.
Foundation juga menyediakan template siap pakai untuk Anda.
- Bulma
Penggunaannya mudah, open-source, responsif, dan bisa bekerja optimal
di berbagai perangkat. Jadi, tak heran walaupun Bulma pendatang baru,
tapi sudah cukup populer.
- Semantic UI
Fokus kepada penggunaan human-friendly HTML, sehingga
memudahkan Anda. Selain itu, menyediakan 3000+ variabel tema dengan
50.000+ komponen UI.
- UIKit
Cocok bagi Anda yang ingin desain serba minimalis, tapi tetap
membuatnya berkelas dan elegan.
- Materialize CSS
Dirancang oleh Google, Materialize CSS bisa menghasilkan elemen dan
fitur berkualitas dengan desain unik anti-mainstream. Plus, responsif dan
mempunyai kompatibilitas yang baik.
- Miligram
Mempunyai ukuran hanya 2KB saja, Miligram menawarkan desain
website yang mudah, cepat, dan bersih.
- PureCSS
Menawarkan rangkaian modul CSS yang cocok digunakan untuk segala
jenis project Anda.
- Skeleton
Walaupun hanya memiliki 400 baris jenis kode, tapi Skeleton bisa
menghasilkan desain yang kompleks dan responsif.
- Tailwind
Mempunyai CSS libraries yang mudah di kostumisasi membuat Anda bisa
menghasilkan UI yang cepat dan praktis.
- Klik dua kali file tersebut sehingga muncul dialog setup install composer
kemudian klik Next
- Check versi php. Pada tombol “browse”, kemudian masukan path php
yang sudah diiintasl di komputer. Disini dicontohkan path php nya yaitu
di “C:/xampp/php/php.exe” kemudian klik next.
- Jika versi php sudah memenuhi standar instalasi Laravel, maka akan
muncul tampilan sebagai berikut. Kemudian klik Install
d. Browser
Untuk melihat hasil dari proyek web yang dibuat menggunakan laravel dapat
menggunakan browser yang sesuai dengan kebutuhan atau selera Anda.
Kemudian kita akan coba membuat route baru dengan mengetikan sintak
sebagai berikut:
Route::get('belajar',function(){
return 'belajar laravel itu menyenangkan';
});
Untuk melihat hasilnya, coba ketikan url http://localhost/laravel/public/belajar
dan hasilnya seperti gambar berikut:
Kita akan mempelajari method route tersebut di depan khususnya dengan yang
berkaitan dengan restful routing pada saat proses CRUD (Create, Read,
Update dan Delete).
b. Routing berparameter
Route berparameter ini dapat digunakan untuk menempatkan sebuah nilai ke
route atau URL yang digunakan untuk berbagai keperluan yang dibutuhkan
nantinya.
Buka file web.php untuk mengatur routing dalam folder routes/web.php
Kemudian kita akan coba membuat route baru dengan mengetikan sintak
sebagai berikut:
Route::get('motor/{jenis}',function($jenis){
return 'Motor dengan jenis : '.$jenis;
});
Untuk melihat hasilnya, ketik URL di browser dan berikan nilai “sport” untuk
route yang berparameter. Coba ketikan url
http://localhost/laravel/public/motor/sport dan hasilnya seperti gambar
berikut:
Anda dapat mencoba dengan berbagai nilai untuk diberikan ke route di atas
seperti :
http://localhost/laravel/public/motor/bebek
http://localhost/laravel/public/motor/MotorGede
http://localhost/laravel/public/motor/RodaTiga
Dalam contoh diatas, kita mengirimkan sebuah nilai yaitu “sport” pada route
berparameter motor/{jenis} dan dalam function route tersebut kita
deklarasikan variabel $jenis untuk ditampilkan pada saat response.
Sebuah parameter juga dapat dijadikan sebuah pilihan jika parameter tersebut
tidak diisi (null) atau diberi nilai default maka dapat ditambahkan sebuah
tanya tanya (?)
Bila dibiarkan atau tidak mengisikan nilai “bebek” untuk URL diatas, maka
hasilnya adalah sebagai berikut :
Di samping nilai default (null), juga dapat diberikan nilai sesuai dengan
kebutuhan. Misalkan diberi contoh default untuk variabel $jenis = ‘Sport’,
maka route nya seperti ini.
Route::get('motor/{jenis?}',function($jenis=’Sport’){
return "Motor dengan jenis ".$jenis;
});
Route di atas apabila dieksekusi dengan tidak memberikan nilai di URL nya
maka akan mengembalikan response dengan nilai "Motor dengan jenis Sport".
Tapi bila diberikan nilai di URLnya misalkan “Bebek”, maka hasil responnya
adalah sebagai berikut "Motor dengan jenis Bebek".
7. MVC
MVC atau kepanjangan dari Model-View-Controller adalah sebuah metode yang
digunakan dalam pengembangan suatu aplikasi yang memisahkan data (model)
dari tampilan / frontend (View) dan logic dari aplikasi itu sendiri (Controller).
MVC memisahkan pengembangan aplikasi berdasarkan komponen utama yang
membangun sebuah aplikasi seperti manipulasi data, antarmuka pengguna dan
kontrol dalam sebuah aplikasi.
Model digunakan untuk proses query atau manipulasi data ke/dari database.
Sedangkan View kaitannya erat dengan antarmuka / frontend tampilan sebuah
web seperti HTML, CSS dan JS dan data yang bersifat client. Controller adalah
logika dari sebuah web, menjembatani komunikasi antara Model dan View.
Adapun gambar simulasi proses MVC pada Laravel diperlihatkan pada gambar di
bawah ini.
Untuk lebih jelasnya langsung dipraktikan saja proses MVC pada laravel.
Pertama buatlah sebuah controller dengan nama BookController. Gunakan
bantuan composer untuk membuat controller dengan sintak sebagai berikut :
php artisan make:controller BookController
Kita akan coba bagaimana mengirimkan sebuah parameter / nilai dari route ke
kontroller. Ganti route book kemudian tambahkan parameter “judul”.
Route::get('book/{judul}','BookController@viewJudul');
Untuk melihat hasilnya coba ketikan URL sebagai berikut pada web browser
http://localhost/laravel/public/book/frameworkPHP
Setelah itu, kita akan coba mengintegrasikan Controller dengan View. Pada folder
resources/views buatlah sebuah file PHP dengan nama Book.php dan isikan kode
sebagai berikut:
<h1>Page View</h1>
Buku yang telah Anda baca berjudul : <h1><?php echo $judul ?></h1>
Buka BookController kemudian edit method viewJudul dan isikan kode sebagai
berikut:
public function viewJudul($judul) {
$data=array(
'judul'=>$judul
);
return view('Book',$data);
}
Bila dijalankan di web browser dengan mengetikan URL sebagai berikut
http://localhost/laravel/public/book/frameworkPHP hasilnya adalah sebagai
berikut:
# untuk bagian Model nanti akan dibahas beserta manajemen database (migration
& seeder)
Blade juga mendukung penuh proses looping dan kondisi-logika PHP seperti
@for, @foreach, @while, @if dan @elseif. Agar lebih memahami dalam
menuliskan sintak menggunakan blade berikut contoh perbandingan menulis
sintak php biasa dengan sintak blade.
echo variabel
/*script php*/
<?php echo "Halo ini cara lama" ?>
kondisi
/*script php*/
<?php
if (status==0) {
echo "Proses Gagal";
} elseif (status==1) {
echo "Proses Berhasil";
}else {
echo "Tidak diketahui";
}
?>
/*kebalikan dari if, jika kondisi tidak memenuhi syarat yang ada*/
@unless($isLogin)
{{ "Anda tidak berhak mengakses halaman ini" }}
@endunless
/* while statement */
<?php while ($i <= 10) :
echo $i++;
endwhile;
?>
/* foreach statement */
<?php
foreach($arr as $value)
{
$value=$value + 1;
echo $value;
}
?>
/* while statement */
@while ($i <= 10) {{ $i ++ }}
@endwhile
/* foreach statement */
@foreach($arr as $value)
{{ $value = $value + 1; }}
{{$value}}
@endforeach
include sub-view
/*script php*/
include 'folder/subview';
Setelah kita mengetahui dasar sintak form, misalkan kita membuat sebuah
form dengan method POST dan diarahkan ke route book/save dengan class
form-control, adalah sebagai berikut:
{{
Form::open(array(‘method’=>’POST’,’route’=>’book/save’,’class
’=>’form-control’)) }}
b. Form Binding/Model
Bagian ini digunakan biasanya pada saat kita ingin memperbarui / update data.
Fungsi ini mem-binding data dari model. Adapun sintaknya sebagai berikut:
{{ Form::model($data,array(‘route’=>’update’,$item->id)) }}
Penjelasan :
- $data , adalah variabel yang dikirim dari Kontroller atau Route. Biasanya
memiliki seluruh record data yang berasal dari table database untuk
ditampilkan di form (Proses Query Database).
- Untuk parameter kedua array(), semua inputan dalam form akan diberikan
ke route update sambil mengirim id dari record yang ingin di update.
c. Form Komponen
Setelah kita mengenal properti dari Form Laravel, selanjutnya kita akan
mempelajari komponen dari Form itu sendiri seperti: text, password, textarea
dan lain-lain.
Label
Untuk menggenerate sebuah label, kita dapat menggunakan sintak sebagai
berikut :
{{ Form::label(‘email’,’Email’)) }}
Text
Untuk membuat sebuah inputan teks, sintaknya sebagai berikut :
{{ Form::text(‘email’,’Email’)) }}
Text Area
Untuk membuat textarea, gunakan sintak nya sebagai berikut:
{{ Form::textarea(‘alamat’,’Alamat’)) }}
Password
Untuk membuat inputan password dan fields yang tersembunyi adalah sebagai
berikut:
{{ Form::password(‘password’,’Password’)) }}
Checkbox
Checkbox mengijinkan form untuk mendapatkan nilai boolean.
{{ Form::checkbox(‘isRead’,’1’,true)) }}
Radio Button
Radio button digunakan untuk memilih satu pilihan dari beberapa pilihan yang
disediakan. Berikut adalah sintaknya yang digunakan :
{{ Form::radio(‘color’,’red’,true)) }} Red
{{ Form::radio(‘color’,’black’)) }} Black
{{ Form::radio(‘color’,’blue’)) }} Blue
Parameter pertama yaitu untuk menentukan class dan id dari radio button yaitu
color. Parameter kedua untuk menentukan nilai dari tiap-tiap radio buton
sedangkan parameter ketiga adalah untuk menentukan default dari pilihan
mana yang sudah di check. Apabila kita konversi ke bentuk biasa kode di atas
adalah sebagai berikut :
<input checked="checked"
name="color"
type="radio"
value="red"
id="color"> Red
<input name="color"
type="radio"
value="black"
id="color"> Black
<input name="color"
type="radio"
value="blue"
id="color"> Blue
SelectBox
Selectbox atau dropdown digunakna untuk menyediakan sebuah pilihan dari
beberapa pilihan yang disediakan. Berikut adalah sintaknya:
{{ Form::select(‘color’,array(
‘red’ => ‘Red’,
‘black’ => ‘Black’,
‘blue’ => ‘Blue’
),’red’) }}
Parameter pertama untuk mengisi nilai dari attribut class dan id yaitu color.
Parameter kedua yaitu tipe array untuk mengisi nilai di selectbox tersebut.
Sedangkan parameter ketiga yaitu untuk mengisi nilai default dari selectbox
yaitu red. Kode diatas jika dikonversikan ke bentuk HTML yaitu :
<select id="color" name="color">
<option value="red" selected="selected">Red</option>
<option value="black">Black</option>
<option value="blue">Blue</option>
</select>
Email Field
Tipe email ini sama seperti input text. Perbedaanya adalah bahwa
Form::email() adalah elemen baru dari HTML5 yang akan membalidasi
bahwa user harus memastikan bahwa nilai yang diinputkan harus email yang
valid.
{{ Form::email(‘email’,’me@email.com’);
Tombol Submit
Adapun tombol submit di Form laravel adalah sebagai berikut :
{{ Form::submit(‘Save’);
Rename kolom
Untuk mengubah kolom dapat menggunakan perintah renameColumn
Schema::table('users',function($table){
$table->renameColumn(‘alamat’,’alamatKirim’);
});
Parameter pertama yaitu kolom yang sudah disimpan di dalam database
sedangkan parameter kedua yaitu nama baru yang akan disimpan untuk
mengganti nama kolom.
Menghapus Kolom
Untuk menghapus kolom dapat menggunakan perintah sebagai berikut :
Schema::table('users',function($table){
$table->dropColumn(‘alamat’);
});
• bigIncrements
jika dirasa tipe increments tidak cukup untuk kamu. Bisa menggunakan
method bigIncrements() yang akan membuat tipe data big integer.
$table->bigIncrements('id');
• string
method ini digunakan untuk menghasilkan tipe data varchar di mysql.
$table->string(‘username',32);
• integer
biasanya digunakan untuk tipe data yang berupa bilangan.
$table->integer(‘age',3);
• boolean
tipe ini hanya mempunyai nilai true atau false.
$table->boolean(‘isSmart’);
• date
sesuai dengan namanya, tipe ini digunakan untuk meyimpan tanggal / date
$table->date(‘departure’);
• timestamps
method ini digunakan utuk meyimpan data tanggal dan waktu dalam
format TIMESTAMP. Pada tabel user diatas, kolom timestamps akan
menghasilkan dua kolom di tabel users mysql yaitu created_at dan
updated_at.
$table->timestamps();
11. Migration
Kita membuat strutkur tabel, relasi dan lain-lainnya biasanya langsung dari mysql
langsung atau menulis sintak SQL dan mendeskripkan tabel beserta kolom apa
saja yang dibutuhkan, tapi apa yang akan terjadi jika kita secara tidak sengaja
menghapus database tersebut ? apa yang akan terjadi jika kamu belajar sebagai
team ? mungkin kamu akan memberikan SQL dump ke masing-masing anggota
untuk menjaga database agar selaras.
Dari permasalahan dasar seperti itulah fungsi migrations sangat dibutuhkan.
Dengan menggunakan fitur migrations ini, kita dapat membuat, memodifikasi dan
menghapus suatu tabel atau relasi antar tabel dengan menggunakan kode program
dari laravel itu sendiri yaitu migrations.
Dengan menggunakan migrations, kamu dan tim dan menjaga kekonsistenan
struktur database, tabel-tabel beserta kolomnya. Atau jika masih bingung dari
penjelasan diatas, kita akan langsung coba mempraktekannya.
a. Membuat migrations
Masih menggunakan konfigurasi database yang ada di Schema Builder,
pertama hapus terlebih dahulu tabel “users” yang telah tersimpan di database
MySQL karena kita akan membuat tabel user kembali dengan menggunakan
migrations. Masuk ke Command Promt windows, kemudian arahkan ke
direktori laravel projek. Untuk membuat file migrations gunakan perintah
berikut :
php artisan make:migration <nama_file_migrations>
contohnya:
php artisan make:migration create_users
bila berhasil akan tercipta file baru dalam folder database/migrations dengan
nama 2022_10_11_033202_create_ users.php. Nama awalnya bisa berbeda-
beda tapi nama akhirnya pasti sama. Dan apabila kita buka, akan
menghasilkan kode php sebagai berikut :
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
Disana terdapat method up() dan down(). Dimana method up() digunakan
untuk membuat table dan memanipulasi kolom dari tabel sedangkan method
down() biasanya digunakan untuk menghapus tabel atau kolom.
Pada method up() dan down() kemudian kita definisikan tabel users beserta
kolom nya menjadi seperti berikut:
public function up() {
Schema::create('users',function($table){
$table->increments('id');
$table->string('nama',128);
$table->string('email');
$table->string('password',60);
$table->timestamps();
});
}
b. Menjalankan migrations
Untuk menjalankan file migration di atas gunakan perintah sebagai berikut:
php artisan migrate
untuk mengecek apakah tabel users sudah berhasil terbuat, silakan masuk
melalui phpmyadmin
Pada database db_laravel terdapat dua tabel yaitu tabel migrations dan users.
Karena kita menggunakan fitur migrations. Maka otomatis laravel akan
membuat tabel migrations yang isinya tentang tabel-tabel yang sudah
dimigrasi ke MySQL. Untuk mengeceknya coba tuliskan sintak berikut di
MySQL.
select * from migrations
Pada perintah php artisan migrate di atas, akan mengeksekusi semua file
migrations yang ada pada direktori database/migrations. Namun bila kita
hanya ingin mengeksekusi satu file migrations saja, gunakan perintah dibawah
ini.
php artisan migrate --path=database/migrations/<nama_file>
c. Rolling migrations
Seperti yang telah kita ketahui, migrations digunakan untuk kepentingan
struktur tabel atau relasi. Tapi kita asumsikan, kita sedang dalam suatu kondisi
yang mengharuskan kita mengatur ulang tabel-tabel yang telah kita buat.
Dari situ, kita membutuhkan untuk me-rollback perubahan dari tim yang
sudah dibuat. Maka kita dapat menggunakan perintah rollback.
php artisan migrate:rollback
Jika kita mengecek di database db_laravel, maka tabel yang suda dibuat
menggunakan migrasi akan dibalikan kembali pada saat kita terakhir kali
menggunakan perintah migrate. Atau jika kita ingin me-rollback semua tabel
migrasi, maka gunakan perintah reset.
php artisan migrate:reset
12. Seeding
Selain fitur migrations yang dapat membuat strutur tabel dan relasi menggunakan
kode program, kita juga dapat menggunakan fitur seeding untuk memasukan data
ke tabel tersebut.
Seed adalah segala sesuatu yang harus dimuat dalam sebuah aplikasi untuk
memastikan aplikasi dapat berjala dengan baik. Hal ini biasanya dianggap sebagai
tahap untuk pengujian sistem dan demo. Sebagian besar aplikasi membutuhkan
data referensi untuk dimuat guna untuk memastikan kesuksesan proses
pengembangan, testing maupun produksi.
Untuk mempermudah pemahaman tentang seeding maka akan kita praktikan
langsung. Sebelumnya file migrasi yang telah dibuat di materi sebelumnya, kita
migrasikan kembali ke database untuk menghasilkan tabel users.
php artisan migrate
a. Membuat model
Pertama kita buat terlebih dahulu model Users dengan menggunakan
composer sebagai berikut:
php artisan make:model Users
Buka file model Users.php yang terbuat tadi yang terletak di direktori app/.
Kemudian tuliskan sintak berikut.
app/Users.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
Buka file seeder tabelUsers.php yang terbuat tadi yang terletak di direktori
database/seeds/. Kemudian tuliskan sintak berikut.
<?php
use Illuminate\Database\Seeder;
use App\Users;
use Illuminate\Database\Seeder;
c. Menjalankan seeding
Untuk menjalankan file seeder, masih di command prompt gunakan perintah
berikut:
php artisan db:seed
13. Middleware
Middleware menyediakan mekanisme penyaringan HTTP request yang masuk ke
aplikasi anda atau dengan kata lain setiap kali ada request yang masuk maka akan
difilter oleh Middleware. Sebagai contoh, Laravel telah menyediakan sebuah
middleware untuk menverifikasi setiap user yang melakukan otentikasi pada
aplikasi anda. Jika user tersebut gagal melakukan otentikasi maka akan dialihkan
ke halaman login. Namun jika user berhasil melakukan otentikasi, maka
middleware akan mengizinkan untuk melakukan request selanjutnya pada aplikasi
tersebut.
Tidak hanya bekerja dalam ruang lingkup otentikasi saja, kita juga dapat membuat
middleware untuk berbagai tugas lainnya. Secara default, telah tersedia beberapa
middleware yang siap digunakan seperti middleware untuk otentikasi dan CSRF
protection yang dapat kita temukan pada direktori app/Http/Middleware.
a. Menggunakan middleware
Jika kita membutuhkan middleware dengan tugas tertentu diluar yang telah
disediakan oleh Laravel, maka kita dapat membuat sebuah middleware baru
dengan menggunakan artisan command:
php artisan make:middleware CekStatus
namespace App\Http\Middleware;
use Closure;
class CekStatus
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$user = \App\User::where('email', $request->email)-
>first();
if ($user->status == 'admin') {
return redirect('admin/dashboard');
} elseif ($user->status == 'siswa') {
return redirect('siswa/dashboard');
}
return $next($request);
}
}
Kasus kali ini yang kita inginkan adalah saat user melakukan login maka
middleware akan mengecek status user, jika statusnya admin maka dialihkan
ke halaman admin/dashboard dan jika statusnya mahasiswa maka akan
dialihkan ke halaman siswa/dashboard dan jika tidak keduanya maka akan
dilewatkan.
b. Mendaftarkan middleware
Middleware yang telah kita buat sebelumnya belum dapat digunakan, hal yang
harus kita lakukan selanjutnya setelah membuat middleware adalah dengan
mendaftarkannya. Ada dua cara mendaftarkan middleware, yang pertama:
middleware yang sifatnya global sehingga setiap kali ada permintaan HTTP
ke aplikasi anda, maka middleware tersebut akan dijalankan. Caranya cukup
daftarkan middleware anda kedalam $middleware property pada
app/Http/Kernel.php.
Anda juga dapat menggunakan lebih dari satu middleware, setiap middleware
yang dipanggil cukup dipisahkan dengan koma (,).
Route::get('/', function(){
})->middleware('middleware1', 'middleware2');
c. Mengelompokkan middleware
Meskipun cara sebelumnya telah diketahui bahwa middleware bisa digunakan
lebih dari satu secara bersamaan, tapi cara tersebut masih kurang efektif jika
terdapat banyak middleware yang akan digunakan sekaligus. Ada opsi lain
yang ditawarkan oleh Laravel yaitu dengan mengelompakkannya menjadi satu
group, dengan cara ini anda tidak perlu menyebutkan satu persatu nama
middlewarenya akan tetapi cukup memanggil nama grupnya maka semua
middleware yang terdapat didalam group tersebut akan digunakan. Anda dapat
menggunakan properti $middlewareGroups pada HTTP kernel untuk
menempatkan group middleware.
Secara default Laravel telah menyediakan dua buah grup middleware yaitu
web dan api.
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
Untuk penggunaannya sama dengan menggunakan middleware cara individu.
Route::get('/', function() {
//
})->middleware('web');
D. Aktivitas
1. Pendahuluan
a. Pastikan komputer sudah terinstall composer!
b. Dengan menggunakan composer ketikkan perintah berikut:
composer create-project laravel/laravel laravel-master
c. Buatlah duplicate terhadap project yang telah terbuat!
d. Buatlah database dengan nama : latihan_(4 digit nis terakhir)
Contoh: nis anda 20.1234 maka nama databasenya adalah latihan_1234
e. Setting file environment (.env) agar terkoneksi dengan database yang telah
dibuat!
f. Masuk ke folder project anda dan menggunakan composer, ketikkan perintah
berikut:
- php artisan make:migration create_peminjaman
- php artisan make:migration create_detail_peminjaman
- php artisan make:migration create_pengembalian
- php artisan make:migration create_pengguna
- php artisan make:migration create_buku
- php artisan make:migration create_siswa
g. Masuk folder database/migration, kemudian ubahlah isi setiap file dengan
perintah berikut:
Schema::create('peminjaman', function (Blueprint $table) {
$table->id('id_pinjam');
$table->string('nis');
$table->string('petugas');
$table->timestamps();
});
2. Percobaan
a. Buatlah database : db_tokobangunan<4digit_nis_terakhir>
Contoh: NIS = 19.1234 maka nama database : db_tokobangunan1234
b. Buatlah tabel melalui migration dari Laravel, sebagai berikut:
c. Buatlah Model di Laravel yang memiliki fungsi CRUD dan View dengan
ketentuan sebagai berikut :
a) Karyawan
b) Produk
c) Penjualan
d) DetailPenjualan
d. Tambahkan pula pagination untuk view Karyawan, Produk dan Penjualan.
e. Buatlah Controller di Laravel beserta method nya dengan ketentuan sebagai
berikut:
a) Karyawan
• Method lihatData()
• Method simpanData()
• Method hapusData()
b) Produk
• Method lihatData()
• Method simpanData()
• Method hapusData()
c) Penjualan
• Method lihatData()
• Method simpanData()
• Method hapusData()
• Method lihatDetail ()
• Method simpanDetail()
• Method hapusDetail()
f. Buatlah Routing dengan ketentuan sebagai berikut:
a) Route : get ‘/karyawan/list-data’, diarahkan ke Controller Karyawan di
method lihatData()
b) Route : post ‘karyawan/simpan’, diarahkan ke Controller Karyawan di
method simpanData()
c) Route : delete ‘karyawan/hapus’, diarahkan ke Controller Karyawan di
method hapusData()
d) Route : get ‘/produk /list-data’, diarahkan ke Controller Produk di method
lihatData()
e) Route : post ‘produk/simpan’, diarahkan ke Controller Produk di method
simpanData()
f) Route : delete ‘produk/hapus’, diarahkan ke Produk PetaKahdiran di
method hapusData()
g) Route : get ‘/penjualan/list-data’, diarahkan ke Controller Penjualan di
method lihatData()
h) Route : post ‘penjualan/simpan’, diarahkan ke Controller Penjualan di
method simpanData()
i) Route : delete ‘penjualan/hapus’, diarahkan ke Controller Penjualan di
method hapusData()
3. Pengetahuan
a. Jelaskan tugas dari routes/web.php
b. Apa penyebabnya muncul kesalahan berikut dan bagaimana solusinya.
d. Dalam kode program berikut Object ‘Kategori’ akan error, bagaimana cara
untuk mengatasi kesalahannya?
4. Proyek
a. Buatlah halaman login dan autentifikasi untuk proyek toko bangunan di atas.
b. Atur tampilan agar menjadi lebih menarik.
E. Penilaian Proyek
Nama Peserta Didik :
Kelas :
Wonosobo, 20__
Peserta didik Guru Mapel
------------------------------ ------------------------------