Pada framework Laravel terdapat template engine yang bernama, BLADE
sama hal nya seperti template engine lainnya yang ada di dalam python.
Sekarang kita akan belajar bagaimana BLADE itu bekerja
- Pertama buka folder resources > buka folder views
- Buat file baru dengan nama file bebas dengan syarat menggunakan ektensi file ".blade.php"
- Dengan contoh saya membuat file dengan nama "contoh.blade.php"
Isi file tersebut dengan html biasa
Sekarang kita buat Route nya untuk mengarahkan halaman "/contoh"
- Buka file Route, buka file web.php
- Ketikkan sintaks
Untuk melihat hasilnya buka "http://127.0.0.1:8000/contoh"
Hasilnya akan seperti ini
Sekarang kita akan membuat template/cetakan halaman untuk semua halaman di dalam Laravel
Bagaimana caranya?
- Pertama buat folder baru didalam views "layouts"
- Pisahkan semua component menjadi beberapa bagian, dengan contoh: "Main Layout", "Home", "About"
- Dari struktur component diatas "Main Layout" sebagai template utama/blueprint, sistem ini dinamakan Templating Layout atau juga Pewarisan Komponen
- Buat file "Mainlayout.blade.php" dengan isi seperti berikut
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Laravel 10 | {{ $title }}</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
</head>
<body>
<nav class="navbar-1-1 navbar navbar-expand-lg navbar-light text-bg-light sticky-top shadow-lg">
<div class="container">
<a class="navbar-brand" href="/">
LARAVEL
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-md-auto gap-2">
<li class="nav-item">
<a class="nav-link {{ ($title === 'Home') ? "active" : "" }}" href="/">Home</a>
</li>
<li class="nav-item">
<a class="nav-link {{ ($title === 'About') ? "active" : "" }}" href="/about">About</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
@yield('content')
</div>
</body>
</html>
Kemudian kita buat Halaman "home.blade.php", yang berisi
@extends ("layouts.mainlayout")
@section('content')
<h1>HALAMAN HOME<h1>
@endsection
Lalu, buat halaman "about.blade.php", yang berisi
@extends ("layouts.mainlayout")
@section('content')
<h1>HALAMAN ABOUT<h1>
@endsection
Konfigurasi pada Route
Route::get('/', function () {
return view('home', ['title' => 'Home']);
});
Route::get('/about', function () {
return view('about', ['title' => 'About']);
});
Hasilnya akan seperti ini
Seperti itu lah cara membuat templating/layouting pada BLADE milik Laravel
Penjelasan :
@section(' ') = sintaks directive untuk mendeklarasikan konten/isi dari sebuah halaman
@yield(' ') = sintaks directive untuk memanggil komponen dari directive @section
@extends(' ') = sintaks directive yang berguna untuk memanggil template utama/blueprint
dari beberapa directive diatas jika digabungkan menjadi satu kesatuan template dinamis yang utuh.