Blade: Templating Engine Laravel
Tampilkan data di HTML dengan sintaks Blade: echo, escaping otomatis, dan komentar template.
Menampilkan data dengan aman
Blade adalah templating engine Laravel. File view disimpan di resources/views dengan ekstensi .blade.php. Cara menampilkan variabel:
{{-- resources/views/posts/show.blade.php --}}
<h1>{{ $post->judul }}</h1>
<p>{{ $post->isi }}</p>
<p>Ditulis oleh {{ $post->penulis ?? 'Anonim' }}</p>Kurung kurawal ganda {{ }} otomatis melakukan escaping HTML. Jadi kalau data berisi tag <script>, ia ditampilkan sebagai teks biasa, bukan dieksekusi. Ini perlindungan bawaan terhadap serangan XSS.
Kapan pakai {!! !!}
Kadang kamu memang ingin merender HTML mentah, misalnya konten dari rich text editor yang sudah kamu percaya:
<div class="konten">
{!! $post->isi_html !!}
</div>Catatan teknis:
{!! !!}berbahaya kalau datanya berasal dari input user tanpa sanitasi. Aturannya: pakai{{ }}sebagai default, dan{!! !!}hanya untuk HTML yang kamu kontrol penuh atau sudah dibersihkan dengan library seperti HTML Purifier.
Komentar Blade
Komentar Blade tidak ikut dirender ke HTML final, beda dengan komentar HTML biasa:
{{-- Komentar ini hilang total di output, user tidak bisa lihat via view-source --}}
<!-- Komentar HTML ini tetap terkirim ke browser -->Berguna untuk menonaktifkan blok template sementara tanpa meninggalkan jejak di source code halaman.
Akses data di view
Kamu bisa mengakses properti object, array, dan memanggil method langsung di Blade:
<p>Total komentar: {{ $post->komentar->count() }}</p>
<p>Kategori: {{ $post['kategori'] }}</p>
<p>{{ strtoupper($post->judul) }}</p>Helper PHP biasa tetap bisa dipakai di dalam {{ }}. Tapi ingat, view sebaiknya hanya menampilkan, bukan menghitung logika berat. Logika berat tetap di controller atau model.