Blade Directive @verbatim, Apa Fungsinya?

Yugo
Laravel Indonesia
Published in
2 min readAug 24, 2017

Di Laravel, kita umum menggunakan tanda baca kurung kurawal dua buah (dan penutupnya) untuk menampilkan sebuah variabel ke peramban (browser). Penggunaan kurung kurawal ini cara singkat pemakain language constructor berupa echo di PHP.

Sebagai contoh, untuk menampilkan nilai dari variabel $name, kita bisa menuliskannya di blade menjadi sebagai berikut:

<p>Hy, my name is {{ $name }}</p>

Dari potongan skrip di atas, Blade akan mem-parsing-nya menjadi:

<p>Hy, my name is <?php e($name) ?></p>

Fungsi e() merupakan fungsi internal Laravel yang berfungsi untuk meng-escape string. Jika, ingin menampilkan unescaped string, kita bisa menggunakan kombinasi tanda kurung kurawal dan tanda seru di Blade.

// $hello = '<p>Hallo Laravel!</p>'; 
{!! $hello !!}

Template parser akan mengkonversi skrip di atas menjadi plain PHP seperti potongan di bawah.

<?php echo $hello ?>

Pada kenyataannya, Blade bukan satu-satunya template parser yang menggunakan tanda kurung kurawal untuk menampilkan nilai dari variabel ke peramban (browser). Di luaran sana, ada banyak paket atau librari (baik untuk server side maupun untuk client side) menggunakan tanda dan pola yang sama untuk mem-parsing sebuah shorthand penampil nilai di peramban.

Sebut saja VueJS misalnya, yang mana framework JavaScript satu ini juga menggunakan tanda kurung kurawal sama persis dengan Blade untuk menampilkan variabel ke peramban.

Permasalahan yang sering terjadi, ketika kita menggunakan variabel VueJS dalam Blade. Dengan menggunakan tanda dan pola yang sama, manakah yang akan dieksekusi terlebih dahulu?

Simak contoh skrip di bawah:

<div class="col-md-12">
<p>{{ title }}</p>
<p>{{ description }}</p>
</div>

<script>
var app = new Vue({
el: '#app',
data: {
title: 'Laravel',
description: 'Tutorial Laravel dalam bahasa Indonesia'
}
})
</script>

Variabel title dan description sejatinya adalah data yang yang didefinisikan dari VueJS, bukan variabel (atau konstanta) yang diambil dari PHP.

Jika dijalankan melalui peramban, maka akan menghasilkan kesalahan Use of undefined constant title — assumed ‘title’. Ini menandakan kalau template parser Blade dijalankan terlebih dahulu, dan seperti pesan kesalahannya, konstanta tersebut tidak didefinisikan di PHP.

Untuk menangani masalah tersebut, kita bisa menambahkan tanda “@” di depan kurung kurawal agar Blade tidak mem-parsing-nya menjadi plain PHP.

<div class="col-md-12">
<p>@{{ title }}</p>
<p>@{{ description }}</p>
</div>

Untuk menghembat waktu dan tak perlu pemborosan penggunaan tanda @, kita bisa menggunakan directive @verbatim untuk menginstruksikan Blade melakukan hal yang sama dengan di atas.

@verbatim
<div class="col-md-12">
<p>{{ title }}</p>
<p>{{ description }}</p>
</div>
@endverbatim

Jauh lebih mudah untuk dibaca bukan? Kalian biasa menggunakan yang mana?

Originally published at www.laravel.web.id on August 24, 2017.

--

--