05 - ARP - PF - Introduction To Controllers and Views in Laravel (Modul 04 Praktikum)
05 - ARP - PF - Introduction To Controllers and Views in Laravel (Modul 04 Praktikum)
PEMROGRAMAN FRAMEWORK
MODUL 4
Pengenalan Controller dan View pada Laravel
Disusun Oleh:
Adzanil Rachmadhi Putra, S.Kom., M.Kom.
DAFTAR ISI
8. Tugas
MODUL 4
PENGENALAN CONTROLLER DAN VIEW PADA LARAVEL
Pada praktikum kali ini kita akan melanjutkan belajar tentang controller dan view pada
laravel. Materi tentang controller dan view akan diilustrasikan dalam bentuk studi kasus
sederhana secara bertahap. Kegiatan ini agar mahasiswa dapat memahami dan
menerapkan penggunaan controller dan view pada laravel framework.
● Masuk ke dalam folder project laravel yang baru saja dibuat, kemudian install
package Laravel UI.
● Jalankan script di bawah ini untuk compile scafolding Bootstrap yang barusan di-
setup.
npm install
● Jalankan script di bawah ini untuk mengaktifkan local development server Laravel
sehingga aplikasi web dapat diakses melalui browser.
● Periksa hasil instalasi Anda. Ketik script ini di prompt perintah Anda:
node -v
npm -v
● Install semua dependencies yang dibutuhkan untuk Bundling Asset dengan Vite,
dengan mengetikkan perintah:
npm install
● Terapkan fitur “Refreshing on Save” dengan memeriksa file konfigurasi file vite
pada vite.config.js dan sesuaikan seperti gambar di bawah ini.
● Terapkan fitur “Processing Static Assets With Vite” dengan buka file
/resources/js/app.js lalu sesuaikan kode program seperti di bawah ini. Vite akan
merujuk pada path direktori yang kita definiskan untuk mengambil aset
gambar/image yang kita butuhkan nantinya.
import "./bootstrap";
import.meta.glob(["../images/**"]);
● Buat folder pada /resources dengan nama images. Letakkan aset gambar/image
yang akan kita gunakan pada website kita pada folder tersebut.
● Buka file View bernama welcome.blade.php. Hapus seluruh kode program yang
ada. Kemudian, letakkan dan arahkan file css dan javascript yang telah
didefinisikan di atas, pada file view (blade) menggunakan Blade Directive @vite().
Panggil asset gambar/image dengan pendekatan Vite seperti di bawah ini.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<title>Belajar Controller & View pada Laravel</title>
@vite('resources/sass/app.scss')
</head>
<body>
<div class="container text-center my-5">
<h1 class="mb-4">Belajar Controller & View pada Laravel</h1>
{{-- Contoh cara mereferensikan gambar di dalam file blade dengan
menggunakan pendekatan Vite --}}
<img class="img-thumbnail" src="{{
Vite::asset('resources/images/laravel.png') }}" alt="image">
● Jalankan Vite.
● Jika sudah berhasil maka ketika kita mengubah kode program pada file css, blade,
ataupun javascript, maka browser akan melakukan reload secara otomatis.
● Jalankan perintah berikut pada project laravel anda untuk mengintal bootstrap,
popper dan bootstrap icons terbaru.
@import "bootstrap-icons/font/bootstrap-icons.css";
● Hapus atau Comment kode import Font & import Variables pada file resources\
sass\app.scss. Kode program akan terlihat seperti di bawah ini:
// Fonts
// @import url("https://fonts.bunny.net/css?family=Nunito");
// Variables
// @import "variables";
// Bootstrap
@import "bootstrap/scss/bootstrap";
@import "bootstrap-icons/font/bootstrap-icons.css";
● Buka file /routes/web.php kemudian buat Route dengan kode seperti di bawah ini:
use App\Http\Controllers\HomeController;
● Sesuaikan kode program pada file HomeController tersebut seperti di bawah ini:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<title>{{ $pageTitle }}</title>
@vite('resources/sass/app.scss')
</head>
<body>
<nav class="navbar navbar-expand-md navbar-dark bg-primary">
<div class="container">
<a href="{{ route('home') }}" class="navbar-brand mb-0 h1"><i
class="bi-hexagon-fill me-2"></i> Data Master</a>
@vite('resources/js/app.js')
</body>
</html>
● Pertanyaan:
● Buka file /routes/web.php kemudian buat Route dengan kode seperti di bawah ini:
Route::get('profile', ProfileController::class)->name('profile');
use App\Http\Controllers\ProfileController;
● Sesuaikan kode program pada file ProfileController tersebut seperti di bawah ini:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<title>{{ $pageTitle }}</title>
@vite('resources/sass/app.scss')
</head>
<body>
<nav class="navbar navbar-expand-md navbar-dark bg-primary">
<div class="container">
<a href="{{ route('home') }}" class="navbar-brand mb-0 h1"><i
class="bi-hexagon-fill me-2"></i> Data Master</a>
@vite('resources/js/app.js')
</body>
</html>
● Pertanyaan:
● Buka file /routes/web.php kemudian buat Route dengan kode seperti di bawah ini:
Route::resource('employees', EmployeeController::class);
use App\Http\Controllers\EmployeeController;
● Buat folder baru dengan nama /employee pada resources/views/. Kemudian buat
file View dengan nama index.blade.php di dalam folder tersebut. Sesuaikan kode
program pada file View tersebut seperti di bawah ini:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<title>{{ $pageTitle }}</title>
@vite('resources/sass/app.scss')
</head>
<body>
<nav class="navbar navbar-expand-md navbar-dark bg-primary">
<div class="container">
<a href="{{ route('home') }}" class="navbar-brand mb-0 h1"><i
class="bi-hexagon-fill me-2"></i> Data Master</a>
<div>
<form
action="{{ route('employees.destroy', ['employee' => 1]) }}"
method="POST">
@csrf
@method('delete')
<button type="submit" class="btn
btn-outline-dark btn-sm me-2"><i class="bi-trash"></i></button>
</form>
</div>
</div>
</td>
</tr>
<tr>
<td>Adzanil</td>
<td>Rachmadhi</td>
<td>[email protected]</td>
<td>25</td>
<td>
<div class="d-flex">
<a href="{{ route('employees.show',
['employee' => 2]) }}" class="btn btn-outline-dark btn-sm me-2"><i
class="bi-person-lines-fill"></i></a>
<a href="{{ route('employees.edit',
['employee' => 2]) }}" class="btn btn-outline-dark btn-sm me-2"><i
class="bi-pencil-square"></i></a>
<div>
<form
action="{{ route('employees.destroy', ['employee' => 2]) }}"
method="POST">
@csrf
@method('delete')
<button type="submit" class="btn
btn-outline-dark btn-sm me-2"><i class="bi-trash"></i></button>
</form>
</div>
</div>
</td>
</tr>
<tr>
<td>Berlian</td>
<td>Rahmy</td>
<td>[email protected]</td>
<td>23</td>
<td>
<div class="d-flex">
<a href="{{ route('employees.show',
['employee' => 3]) }}" class="btn btn-outline-dark btn-sm me-2"><i
class="bi-person-lines-fill"></i></a>
<a href="{{ route('employees.edit',
['employee' => 3]) }}" class="btn btn-outline-dark btn-sm me-2"><i
class="bi-pencil-square"></i></a>
<div>
<form
action="{{ route('employees.destroy', ['employee' => 3]) }}"
method="POST">
@csrf
@method('delete')
<button type="submit" class="btn
btn-outline-dark btn-sm me-2"><i class="bi-trash"></i></button>
</form>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
@vite('resources/js/app.js')
</body>
</html>
● Pertanyaan:
○ Jelaskan dan dokumentasikan setiap kode program yang anda kerjakan di
atas!
○ Tunjukkan dan buktikan ada Route apa saja yang dihasilkan pada Bab ini!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<title>{{ $pageTitle }}</title>
@vite('resources/sass/app.scss')
</head>
<body>
<nav class="navbar navbar-expand-md navbar-dark bg-primary">
<div class="container">
<a href="{{ route('home') }}" class="navbar-brand mb-0 h1"><i
class="bi-hexagon-fill me-2"></i> Data Master</a>
@if ($errors->any())
@foreach ($errors->all() as $error)
<div class="alert alert-danger alert-
dismissible fade show">
{{ $error }}
<button type="button" class="btn-close"
data-bs-dismiss="alert" aria-label="Close"></button>
</div>
@endforeach
@endif
@vite('resources/js/app.js')
</body>
</html>
$validator = Validator::make($request->all(), [
'firstName' => 'required',
'lastName' => 'required',
'email' => 'required|email',
'age' => 'required|numeric',
], $messages);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
return $request->all();
}
● Pertanyaan:
○ Terapkan “Displaying The Validation Errors” pada Bab ini yang hasil
akhirnya seperti gambar di bawah ini.
8. Tugas
1. Praktekkan seluruh poin praktikum dan jawab seluruh poin pertanyaan yang ada di
atas secara INDIVIDU.
2. Dokumentasikan seluruhnya (screenshot kode program, output pada browser,
jawaban pertanyaan) dalam bentuk Laporan Praktikum.
3. Upload manual project laravel hasil praktikum ke github (hapus folder
node_modules & vendor).
a. Buat repository public baru pada akun github anda.
b. Klik link “Uploading an existing file” untuk meng-upload project laravel
yang telah anda buat.
a. Cantumkan URL repository yang telah dibuat pada Laporan Praktikum.
4. Kumpulkan Laporan Praktikum (.pdf) yang telah dibuat di dalam praktikum via LMS
paling lambat sebelum jadwal praktikum minggu depan.