Как создать свои собственные функции 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).
Я надеюсь, что это может помочь кому-то :)