Penjelasan Detail tentang @include, @yield, @extends, @section pada laravel 12#6

image_pdfimage_print

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 &copy; 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.