Dokumentasi Praktikum Pengembangan Aplikasi Web Laravel
Laravel merupakan salah satu framework PHP yang banyak digunakan dalam pengembangan aplikasi web modern karena memiliki struktur yang rapi, efisien, dan mendukung konsep MVC atau Model View Controller. Melalui konsep MVC, pengembangan aplikasi dapat dipisahkan menjadi beberapa bagian utama, yaitu model sebagai pengelola data, view sebagai tampilan antarmuka pengguna, dan controller sebagai pengatur logika aplikasi. Pada praktikum ini, mahasiswa mempelajari dasar-dasar penggunaan Laravel mulai dari konfigurasi database, pembuatan migration, seeding, routing, model, controller, hingga view.
Praktikum ini juga menjadi dasar penting dalam membangun aplikasi CRUD sederhana. CRUD merupakan proses utama dalam pengelolaan data, yaitu Create, Read, Update, dan Delete. Dengan memahami tahapan-tahapan tersebut, mahasiswa diharapkan mampu membuat aplikasi web yang dapat terhubung dengan database, menampilkan data, menambahkan data awal melalui seeder, mengatur alamat URL menggunakan route, serta menampilkan data ke halaman web menggunakan Blade Template.
Tujuan dari praktikum ini adalah:
Langkah pertama adalah membuka file .env, kemudian mengubah konfigurasi database agar Laravel dapat terhubung dengan database yang digunakan. Pada bagian ini, konfigurasi disesuaikan dengan MySQL, host lokal, port 3306, nama database praktikum_laravel, username root, dan password yang dikosongkan.
Setelah konfigurasi database disiapkan, buat database baru di phpMyAdmin dengan nama praktikum_laravel. Database ini akan digunakan untuk menyimpan tabel dan data yang dibuat melalui migration dan seeder Laravel.
Migration digunakan untuk membuat struktur tabel secara terkontrol melalui kode. Untuk membuat tabel products, jalankan perintah berikut pada terminal:
Jika perintah berhasil dijalankan, Laravel akan membuat file migration baru di dalam folder database/migrations. File tersebut kemudian dapat diubah untuk menentukan kolom-kolom yang dibutuhkan pada tabel products.
Kodingan migration tersebut digunakan untuk membuat tabel baru bernama products di database. Pada bagian up(), Laravel membuat tabel products dengan beberapa kolom, yaitu id sebagai nomor unik otomatis, name untuk menyimpan nama produk, price untuk menyimpan harga produk dalam bentuk angka, description untuk menyimpan deskripsi produk dalam bentuk teks, serta timestamps untuk mencatat waktu data dibuat dan diperbarui. Sementara itu, bagian down() digunakan untuk membatalkan migration, yaitu menghapus tabel products jika migration di-rollback.
Setelah struktur tabel selesai dibuat, jalankan migration menggunakan perintah:
Perintah tersebut akan mengeksekusi seluruh file migration yang belum dijalankan. Jika berhasil, tabel products akan terbentuk secara otomatis di dalam database.
Setelah proses migrate selesai, cek kembali database yang telah dibuat. Jika berhasil, akan terlihat tabel-tabel Laravel seperti cache, jobs, migrations, users, dan products.
Seeder digunakan untuk mengisi data awal ke dalam database secara otomatis. Untuk membuat seeder products, jalankan perintah berikut:
Setelah file ProductSeeder.php dibuat, isi file tersebut dengan data awal produk. Data yang dimasukkan berupa contoh produk seperti Laptop dan Mouse, lengkap dengan harga serta deskripsinya.
Kodingan tersebut berfungsi untuk mengisi data awal ke dalam database secara otomatis. Di dalam fungsi run(), kode menggunakan fitur DB::table('products')->insert(...) untuk memasukkan dua data produk baru sekaligus ke dalam tabel products, yaitu sebuah Laptop seharga 7.000.000 dengan deskripsi "Laptop untuk pemrograman" dan sebuah Mouse seharga 150.000 dengan deskripsi "Mouse wireless". Selain data produk, kode ini juga otomatis menyimpan waktu pembuatan dan pembaruan data menggunakan fungsi now(), sehingga mempermudah developer menyediakan data uji coba tanpa harus memasukkannya satu per satu secara manual ke database.
Agar seeder dapat dijalankan, tambahkan pemanggilan ProductSeeder pada file DatabaseSeeder.php.
Setelah itu jalankan perintah berikut:
Routing digunakan untuk menentukan alamat URL yang dapat diakses oleh pengguna. Beberapa jenis routing yang dipelajari pada praktikum ini adalah routing dasar, routing parameter, named route, dan route group.
Untuk mengakses routing parameter, pengguna dapat membuka alamat seperti http://127.0.0.1:8000/produk/1. Jika route berhasil dijalankan, halaman akan menampilkan informasi produk berdasarkan ID yang dikirim melalui URL.
Model digunakan sebagai penghubung antara aplikasi Laravel dan tabel database. Pada praktikum ini dibuat file model baru bernama Product.php di dalam folder app/Models.
Kodingan tersebut berfungsi sebagai jembatan penghubung antara aplikasi PHP dan tabel database. Di dalamnya terdapat properti protected $fillable yang berisi array kolom name, price, dan description. Properti ini bertindak sebagai pengamanan data atau fitur Mass Assignment protection. Fitur ini memastikan bahwa hanya ketiga kolom tersebut yang diizinkan untuk diisi atau dimanipulasi secara massal secara bersamaan, sehingga berguna untuk mencegah celah keamanan dari pihak luar yang mencoba menyisipkan data ke kolom sensitif lain secara ilegal. Selain itu, baris use HasFactory juga disematkan di dalam kelas agar model dapat terhubung dengan Factory Laravel untuk mempermudah pembuatan data tiruan atau data uji coba dalam jumlah besar saat proses pengembangan aplikasi.
Controller digunakan untuk mengatur logika aplikasi. Untuk membuat controller products, jalankan perintah berikut:
Setelah controller dibuat, buka file ProductController.php, kemudian tambahkan method index() untuk mengatur respons yang akan dikembalikan ketika route tertentu diakses.
Kodingan tersebut berfungsi sebagai pengatur logika utama untuk menjembatani permintaan pengguna dengan tampilan atau data yang akan dikembalikan. Di dalam kelas ini terdapat sebuah fungsi atau method bernama index(), yang biasanya digunakan sebagai fungsi utama untuk menampilkan halaman daftar produk. Ketika fungsi index dipanggil melalui routing Laravel, kode di dalamnya akan langsung mengeksekusi perintah return yang berarti aplikasi akan langsung mengembalikan dan menampilkan teks tulisan "Halaman Product" ke layar browser pengguna tanpa memuat berkas tampilan HTML terlebih dahulu.
Agar controller dapat diakses melalui URL, tambahkan route pada file web.php. Route ini memetakan alamat tertentu ke method index() yang ada di dalam ProductController.
Kodingan tersebut berfungsi untuk memetakan alamat URL tertentu agar bisa diakses oleh pengguna. Baris pertama digunakan untuk mengimpor lokasi kelas Controller yang ingin dipakai agar bisa dibaca oleh sistem routing. Selanjutnya, perintah Route::get('/products', [ProductController::class, 'index']); berarti ketika ada pengguna yang mengakses situs web menggunakan metode HTTP GET dengan mengetikkan atau mengklik alamat URL /products, Laravel akan secara otomatis mengarahkan permintaan tersebut untuk diproses oleh fungsi bernama index yang berada di dalam ProductController.
Controller kemudian dihubungkan dengan model agar data produk dapat diambil dari database. Pada tahap ini, method index diperbarui agar mengambil seluruh data dari model Product dan mengirimkannya ke view.
Kodingan ini adalah pembaruan pada fungsi index() di dalam ProductController yang sudah terintegrasi penuh dengan pola arsitektur MVC Laravel untuk menampilkan data secara dinamis. Baris pertama di dalam fungsi $products = Product::all(); berfungsi untuk mengambil seluruh data produk yang ada di dalam database dengan bantuan model Product yang diimpor pada baris ke-5. Selanjutnya, perintah return view('products', compact('products')); akan mengirimkan data yang sudah diambil tersebut ke sebuah berkas tampilan bernama products. Fungsi compact bertindak membungkus variabel $products agar isinya bisa diakses dan didekorasi menggunakan HTML/Blade sebelum akhirnya ditampilkan kepada pengguna di browser.
Resource route digunakan untuk membuat routing CRUD secara otomatis. Dengan satu baris route resource, Laravel dapat menyediakan route untuk menampilkan data, menambah data, menyimpan data, mengedit data, memperbarui data, dan menghapus data.
Layout digunakan sebagai kerangka dasar tampilan agar struktur HTML dapat digunakan berulang kali pada beberapa halaman. Pada praktikum ini dibuat file layout di dalam folder resources/views/layouts/app.blade.php.
Kodingan tersebut berfungsi sebagai kerangka dasar HTML yang dapat digunakan berulang kali oleh halaman web lain agar desainnya konsisten. Struktur utamanya menggunakan sintaks berupa @yield('title') di dalam tag judul dan @yield('content') di dalam tag body, yang bertindak sebagai kontainer kosong. Ketika ada halaman anak yang menggunakan layout induk ini, halaman anak tersebut cukup mengisi bagian title dan content dengan teks atau komponen HTML mereka sendiri, sehingga judul halaman dan isi konten di bawah tulisan "Aplikasi Laravel" akan berubah secara otomatis sesuai dengan halaman yang sedang dibuka oleh pengguna.
Setelah layout dibuat, view Blade dapat menggunakan layout tersebut dengan sintaks @extends. View products kemudian menampilkan data produk secara dinamis menggunakan perulangan @foreach.
Kodingan tersebut berfungsi menyusun dan menampilkan data produk secara dinamis. Baris @extends('layouts.app') digunakan untuk mewarisi struktur dari berkas Master Layout, sementara @section('title', 'Products') bertugas mengisi bagian judul halaman pada layout induk tersebut dengan teks "Products". Selanjutnya, di dalam blok @section('content') hingga @endsection, terdapat proses perulangan menggunakan sintaks @foreach ($products as $product) yang berfungsi untuk membongkar seluruh data produk dari controller satu per satu, lalu mencetaknya ke dalam tag daftar HTML berupa nama, harga dengan format rupiah, serta deskripsi masing-masing produk secara otomatis ke layar browser.
Pada bagian tugas, dibuat database baru dengan nama db_mahasiswa. Database ini digunakan untuk menyimpan data mahasiswa pada aplikasi CRUD sederhana.
Buka kembali file .env, kemudian ubah nama database menjadi db_mahasiswa agar aplikasi Laravel terhubung dengan database tugas yang baru dibuat.
Setelah koneksi database berhasil diatur, langkah selanjutnya adalah menyiapkan file model yang akan merepresentasikan struktur data. Buat dan buka file Mahasiswa.php di dalam direktori app/Models, kemudian tambahkan properti fillable untuk mengizinkan penyimpanan data secara massal pada kolom nim, nama, dan jurusan.
Buat tabel baru dengan menjalankan perintah berikut pada terminal:
Setelah file migration dibuat, buka file migration tersebut di dalam folder database/migrations. Ubah bagian method up() dengan menambahkan perintah untuk membuat kolom nim yang unik, kolom nama, dan kolom jurusan.
Jalankan perintah php artisan migrate untuk mengeksekusi migration yang sudah dibuat. Jika berhasil, tabel mahasiswas akan terbentuk di dalam database.
Buat seeder dengan mengetikkan perintah berikut pada terminal:
Siapkan data awal menggunakan file seeder. Masukkan kode ke dalam file MahasiswaSeeder.php yang berada di folder database/seeders untuk menyuntikkan data akademik sebagai rekaman contoh pertama ke dalam tabel.
Agar file seeder tersebut dieksekusi oleh sistem, panggil class MahasiswaSeeder pada file DatabaseSeeder.php di dalam method run. Setelah semua file database siap, jalankan perintah berikut:
Buka file web.php di dalam direktori routes, lalu tambahkan route resource yang akan memetakan semua fungsi CRUD secara otomatis ke dalam controller.
Buat file baru pada direktori app/Http/Controller dengan nama MahasiswaController.php. Lalu susun logika pemrosesan data di dalam file controller tersebut. File ini bertugas menampilkan, menyimpan, mengubah, dan menghapus data mahasiswa.
Rancang antarmuka pengguna dengan membuat file tampilan di dalam folder resources/views/mahasiswa. Buat file bernama index.blade.php untuk menampilkan tabel daftar mahasiswa yang datanya diambil dari database, lengkap dengan tombol navigasi dan aksi.
Buat file baru pada folder resources/views/mahasiswa dengan nama create.blade.php. File ini digunakan untuk membuat form input data mahasiswa baru.
Buat file baru pada folder resources/views/mahasiswa dengan nama edit.blade.php. File ini digunakan untuk menampilkan form edit data mahasiswa berdasarkan data yang dipilih.
Setelah seluruh bagian model, migration, seeder, route, controller, dan view selesai dibuat, aplikasi dapat dijalankan untuk menampilkan halaman daftar mahasiswa. Pengguna dapat menambahkan data baru melalui form tambah data, mengedit data yang sudah ada, serta menghapus data dengan konfirmasi.
Praktikum ini memberikan pemahaman yang komprehensif mengenai pengembangan aplikasi web modern menggunakan framework Laravel dengan menerapkan arsitektur Model View Controller (MVC). Pengelolaan struktur database dapat dilakukan secara efisien menggunakan fitur migration, yang memungkinkan developer untuk membuat, mengubah, dan melakukan versioning pada tabel basis data langsung melalui kode program. Selain itu, kebutuhan untuk mengisi data awal dan membuat data dummy guna keperluan pengujian sistem dapat diselesaikan dengan mudah melalui implementasi seeding. Seluruh proses interaksi dan manipulasi data di dalam database tersebut dipermudah oleh komponen Model yang secara spesifik memanfaatkan fitur Eloquent ORM bawaan Laravel.
Secara praktis, alur kerja sistem berhasil diintegrasikan melalui konfigurasi routing yang berfungsi penuh untuk menentukan URL spesifik serta respons yang diberikan oleh aplikasi. Proses ini diatur oleh Controller yang bertindak sebagai pengelola logika utama sekaligus penghubung yang menjembatani request pengguna dari View menuju Model. Untuk antarmuka pengguna, penggunaan Blade Template Engine pada bagian View sangat membantu dalam menciptakan antarmuka yang terstruktur, terutama dengan adanya fitur Blade Layout yang memungkinkan kerangka tampilan utama digunakan berulang kali pada banyak halaman secara efisien. Integrasi dari seluruh tahapan materi ini memberikan landasan komprehensif untuk mengimplementasikan aplikasi CRUD secara terstruktur, khususnya pada penyelesaian tugas pengelolaan data mahasiswa.
Lihat Repository GitHub Tugas Praktikum 7