Как создать свои собственные функции Blade

От

<div class="form-group">
   <label form="title">Title</label>
   <input type="text" class="form-control" name="title" id="title">
</div>

To

@inputTextBox('title')

1. Создайте класс на уровне app в моем случае InputBox

<?php

namespace App;

class InputBox
{
    public static function text($name)
    {
        return "<div class=\"form-group\">
      <label form=\"{$name}\">{$name}</label>
      <input type=\"text\" class=\"form-control\" name=\"{$name}\" id=\"{$name}\">
       </div>";
    }
}

2. Измените свой класс AppServiceProvider.

добавление этой функции boot

\Blade::directive('inputTextBox', function ($field){
   return "<?php echo \App\InputBox::text($field); ?>";
});

3. Теперь замените свой код новой директивой.

@extends('template')

@section('content')
<form action="{{ action('Web\TeamController@store') }}" method="POST">
   @csrf
   @inputTextBox('title')
   <button type="submit" class="btn btn-primary">Create</button>
</form>
@endsection

Если вы видите @inputTextBox(‘title’) на своей странице, вам необходимо очистить кеш представления:

#sudo php artisan view:очистить

Вы можете создать набор директив для своего проекта, чтобы сделать его более масштабируемым, читабельным и пригодным для повторного использования (плюс меньше HTML-кода в ваших блейд-файлах: P).

Я надеюсь, что это может помочь кому-то :)