🎯 Tujuan
Memahami konsep Blade Template dan cara membuat layout utama yang dapat digunakan ulang di beberapa halaman, dengan routing lewat Controller.
🧩 Materi & Langkah Praktik
1. Apa itu Blade Template?
- Blade adalah template engine bawaan Laravel.
- Kita bisa menggunakan
@yield,@section, dan@extendsuntuk membuat layout utama dan mewarisinya ke halaman lain. - Tujuannya agar tampilan konsisten dan mudah dikelola.
2. Buat Layout Utama
📂 Struktur folder:
resources/
└── views/
└── layouts/
└── main.blade.php
📝 resources/views/layouts/main.blade.php:
<!DOCTYPE html>
<html>
<head>
<title>@yield('title', 'CRUD Produk')</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="bg-light">
<nav class="navbar navbar-dark bg-dark">
<div class="container">
<a href="/" class="navbar-brand">CRUD Produk</a>
<ul class="navbar-nav flex-row ms-auto">
<li class="nav-item me-3">
<a href="/" class="nav-link text-white">Home</a>
</li>
<li class="nav-item me-3">
<a href="/about" class="nav-link text-white">About</a>
</li>
<li class="nav-item me-3">
<a href="/contact" class="nav-link text-white">Contact</a>
</li>
</ul>
</div>
</nav>
<div class="container mt-4">
@yield('content')
</div>
</body>
</html>
3. Buat Controller
Jalankan perintah:
php artisan make:controller HomeController
📝 app/Http/Controllers/HomeController.php:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
public function home()
{
return view('home');
}
public function about()
{
return view('about');
}
public function contact()
{
$data = [
'name' => 'John Doe',
'email' => '[email protected]'
];
return view('contact', $data);
}
}
4. Buat Halaman View
📂 Struktur folder:
resources/
└── views/
├── layouts/
│ └── main.blade.php
├── home.blade.php
├── about.blade.php
└── contact.blade.php
📝 resources/views/home.blade.php:
@extends('layouts.main')
@section('title', 'Halaman Utama')
@section('content')
<div class="text-center">
<h1>Selamat Datang di CRUD Produk</h1>
<p class="lead">Latihan Laravel untuk Pemula</p>
</div>
@endsection
📝 resources/views/about.blade.php:
@extends('layouts.main')
@section('title', 'Tentang Aplikasi')
@section('content')
<div class="card">
<div class="card-body">
<h4>Tentang Aplikasi</h4>
<p>Aplikasi ini dibuat untuk latihan CRUD menggunakan Laravel dan Bootstrap 5.</p>
</div>
</div>
@endsection
📝 resources/views/contact.blade.php:
@extends('layouts.main')
@section('title', 'Kontak')
@section('content')
<div class="card">
<div class="card-body">
<h4>Kontak</h4>
<p>Nama: {{ $name }}</p>
<p>Email: {{ $email }}</p>
</div>
</div>
@endsection
5. Atur Route
📝 routes/web.php:
use App\Http\Controllers\HomeController;
Route::get('/', [HomeController::class, 'home']);
Route::get('/about', [HomeController::class, 'about']);
Route::get('/contact', [HomeController::class, 'contact']);
✅ Struktur Akhir Project
project-laravel/
├── app/
│ └── Http/
│ └── Controllers/
│ └── HomeController.php
├── resources/
│ └── views/
│ ├── layouts/
│ │ └── main.blade.php
│ ├── home.blade.php
│ ├── about.blade.php
│ └── contact.blade.php
├── routes/
│ └── web.php
└── vendor/
📝 Tugas/Latihan
- Buat halaman baru bernama
services.blade.phpmenggunakan layout yang sama. - Tampilkan daftar layanan sederhana.
- Tambahkan method
services()diHomeController. - Buat route baru
/services.