Assalamualaikum warahmatullahi wabarakatuh 👋

Sebagai salah satu programmer yang menggunakan Laravel, tentunya setiap hari saya berjibaku dengan file berekstensikan *.blade.php. Tak jarang pula saya membuat beberapa fungsi untuk mempermudah hal-hal yang sulit atau berulang. Salah satu yang sering saya lakukan adalah untuk menampilkan data uang.

Misalnya, dari database hanya menampilkan 150000, tetapi saya ingin hasil akhirnya adalah IDR 150.000.

Normalnya akan melakukan hal seperti ini:

<p>IDR </p>

Namun, saya melakukannya dengan cara lain, yakni seperti ini:

<p>@idr($data->price)</p>

Bagaimana cara melakukannya?

Insyaallah mudah. Yuk sambil dipraktekkan.

Caranya adalah dengan mendaftarkan directive blade kita ke app/Providers/AppServiceProvider.php di dalam method boot().

public function boot()
{
    Blade::directive('idr', function ($string) {
        return "<?php echo 'IDR ' . number_format($data->price, 0, ',', '.'); ?>";
    });
}

Perhatikan bahwa kita tidak hanya me-return string biasa, melainkan lengkap dengan tag pembuka dan penutup serta echo-nya seakan menuliskan kode PHP di dalam PHP. Mengapa demikian?

Karena directive ini akan dijalankan di tengah-tengah blok kode HTML, meskipun ekstensi filenya .php.

Kalau teman-teman ingin mendaftarkan blade directive lainnya, silahkan tambahkan saja di bawah barisan kode tadi ya.

Happy coding!