Member-only story
Laravel — P68: Defining Custom Directives in Blade

How many times have you wished that a specific directive existed in Blade? If the answer to that question is “many,” then do I have a surprise for you. You can create your own directives in Blade.
First, you need to create a service provider using the php artisan make:provider
command. This provider will register your Blade directives with Laravel.
# php artisan make:provider CustomBladeServiceProvider
INFO Provider [app/Providers/CustomBladeServiceProvider.php] created successfully.
#
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class CustomBladeServiceProvider extends ServiceProvider
{
/**
* Register services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
//
}
}
Next, you need to register the provider in the config/app.php
file.
'providers' => [
/*
* Laravel Framework Service Providers...
*/
// ...
App\Providers\CustomBladeServiceProvider::class,
In your CustomBladeServiceProvider
class, you can define your custom Blade directive using the Blade::directive
method.
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;
class CustomBladeServiceProvider extends ServiceProvider
{
// ...
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
Blade::directive('money', function ($money) {
return "$<?php echo number_format($money, 2); ?>";
});
}
}
You can now use your custom directive in your Blade templates like this:
<h1>
@money(2500)
</h1>
We simply need a route now to see it in action.
Route::get('/custom-directive', function () {
return view('custom-directive.index');
});
The response that you get is: $2,500.00
.
Alternate Approach
Don’t want to create a service provider? You can add the directive to your…