Blade Layout dan Component
Bangun kerangka halaman dengan @extends dan @section, plus component reusable ala <x-alert/>.
Layout induk dengan @yield
Daripada mengulang tag HTML, navbar, dan footer di setiap halaman, buat satu layout induk:
{{-- resources/views/layouts/app.blade.php --}}
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>@yield('title', 'Blogku')</title>
</head>
<body>
<nav>... menu navigasi ...</nav>
<main>
@yield('content')
</main>
<footer>... footer ...</footer>
</body>
</html>Halaman anak tinggal mengisi slotnya:
{{-- resources/views/posts/index.blade.php --}}
@extends('layouts.app')
@section('title', 'Daftar Postingan')
@section('content')
<h1>Semua Postingan</h1>
@foreach ($posts as $post)
<article>{{ $post->judul }}</article>
@endforeach
@endsection@yield('title', 'Blogku') punya nilai default kalau halaman anak tidak mengisi section tersebut.
Include: potongan view reusable
Untuk potongan kecil seperti form atau kartu, pakai @include:
{{-- Di dalam view --}}
@include('partials.alert', ['pesan' => 'Data berhasil disimpan!']){{-- resources/views/partials/alert.blade.php --}}
<div class="alert">{{ $pesan }}</div>Component modern: sintaks x-
Laravel 7+ punya sintaks component yang lebih rapi. Buat dengan Artisan:
php artisan make:component AlertIni membuat class di app/View/Components/Alert.php dan view di resources/views/components/alert.blade.php. Pakainya seperti tag HTML:
<x-alert type="sukses" pesan="Data tersimpan!" />
{{-- Dengan slot untuk konten bebas --}}
<x-card>
<h2>Judul kartu</h2>
<p>Isi bebas di sini via $slot</p>
</x-card>Catatan teknis: Pilih
@includeuntuk potongan view sederhana tanpa logika, dan componentx-kalau butuh props terstruktur atau logika di class component-nya. Untuk project kecil,@includebiasanya sudah cukup.