Dalam Laravel, Blade Template Engine menyediakan berbagai fitur untuk memudahkan pengelolaan tampilan (view). Beberapa fitur utama yang sering digunakan adalah @include
, @yield
, @extends
, dan @section
. Berikut adalah penjelasan detail masing-masing:
1. @include
@include
digunakan untuk menyertakan tampilan (view) lain di dalam sebuah view. Ini berguna untuk menempatkan bagian yang dapat digunakan kembali, seperti header, footer, atau sidebar.
Sintaks:
@include('nama_view')
Jika view memiliki data yang ingin dikirimkan, bisa menggunakan cara berikut:
@include('nama_view', ['key' => $value])
Contoh Penggunaan:
Misalkan ada file header.blade.php
:
<header>
<h1>Selamat Datang di Website Kami</h1>
</header>
Kemudian, file home.blade.php
bisa menyertakan header tersebut:
@include('header')
<p>Ini adalah halaman utama.</p>
Dengan demikian, header akan dimasukkan secara otomatis dalam halaman tanpa harus menuliskannya berulang kali.
2. @yield
@yield
digunakan untuk menentukan bagian dinamis dalam template yang bisa diisi oleh halaman lain. Biasanya digunakan dalam layout utama untuk menandai bagian yang bisa diubah oleh child view.
Sintaks:
@yield('nama_section')
Contoh Penggunaan:
Misalkan ada file layout.blade.php
sebagai layout utama:
<html>
<head>
<title>@yield('title')</title>
</head>
<body>
<header>
<h1>Website Laravel</h1>
</header>
<div class="content">
@yield('content')
</div>
<footer>
<p>Hak Cipta © 2025</p>
</footer>
</body>
</html>
Lalu, dalam file home.blade.php
, kita bisa mengisi bagian yang telah ditentukan dengan @yield
:
@extends('layout')
@section('title', 'Halaman Utama')
@section('content')
<p>Selamat datang di halaman utama.</p>
@endsection
Maka, halaman home.blade.php
akan menggunakan layout dari layout.blade.php
, tetapi mengisi bagian @yield('title')
dan @yield('content')
.
3. @extends
@extends
digunakan untuk menunjukkan bahwa sebuah view mewarisi template dari view lain. Biasanya digunakan di dalam halaman yang lebih spesifik untuk menunjukkan bahwa view tersebut menggunakan template utama.
Sintaks:
@extends('nama_template')
Contoh Penggunaan:
Misalkan dalam dashboard.blade.php
, kita ingin menggunakan layout utama layout.blade.php
:
@extends('layout')
@section('title', 'Dashboard')
@section('content')
<h2>Ini adalah dashboard</h2>
@endsection
Dengan menggunakan @extends('layout')
, Laravel akan mengambil layout.blade.php
sebagai template utama dan mengisi bagian yang telah didefinisikan dalam @yield()
.
4. @section
@section
digunakan untuk mendefinisikan isi dari bagian tertentu yang akan mengisi @yield
dalam template utama.
Sintaks:
@section('nama_section', 'Isi Singkat')
atau jika memiliki lebih dari satu baris:
@section('nama_section')
Isi yang lebih panjang...
@endsection
Contoh Penggunaan:
Di dalam profile.blade.php
:
@extends('layout')
@section('title', 'Profil Pengguna')
@section('content')
<h2>Profil Saya</h2>
<p>Nama: John Doe</p>
<p>Email: john@example.com</p>
@endsection
@section('title', 'Profil Pengguna')
akan menggantikan @yield('title')
di layout.blade.php
, dan bagian @section('content')
akan menggantikan @yield('content')
.
Kesimpulan
@include
→ Untuk menyertakan tampilan lain di dalam tampilan saat ini.@yield
→ Untuk menentukan bagian dinamis dalam layout yang akan diisi oleh halaman lain.@extends
→ Untuk menunjukkan bahwa sebuah view mewarisi template utama.@section
→ Untuk mengisi konten di dalam@yield
.
Dengan memahami konsep ini, pengelolaan template dalam Laravel menjadi lebih modular, efisien, dan mudah digunakan.