Formello — це пакет Laravel, розроблений для автоматизації створення форм. Замість того щоб вручну писати HTML-код, ви можете використовувати свої Eloquent моделі для визначення структури форм. Це не лише економить час, а й забезпечує єдність у вашому додатку.
За словами розробника, "Formello було створено для розробників, які потребують швидкого створення форм без зайвих функцій повної панелі адміністратора, проте хочуть простішого, інтуїтивно зрозумілого API, ніж у складніших бібліотеках форм."
Щоб створити форму, давайте створимо новий клас форми ArticleForm
у app/Forms
, який розширює Formello
:
<?php
namespace App\Forms;
use App\Models\Category;
use App\Models\User;
use Metalogico\Formello\Formello;
class ArticleForm extends Formello
{
protected function create(): array
{
return [
'method' => 'POST',
'action' => route('articles.store'),
];
}
protected function edit(): array
{
return [
'method' => 'PATCH',
'action' => route('articles.update', $this->model->id),
];
}
protected function fields(): array
{
return [
'title' => [
'label' => __('Назва'),
],
'content' => [
'label' => __('Зміст'),
],
'category_id' => [
'label' => __('Категорія'),
'widget' => 'select',
'choices' => Category::pluck('name', 'id')->toArray(),
],
'author_id' => [
'label' => __('Автор'),
'widget' => 'select',
'choices' => User::pluck('name', 'id')->toArray(),
],
];
}
}
Якщо у вас вже є модель, ви можете використовувати команду artisan, щоб згенерувати вищезазначений файл на основі існуючих моделей. Наприклад:
php artisan make:formello --model=Article
Спочатку оновіть дію вашого контролера:
public function create()
{
$form = new ArticleForm(Article::class);
return view('articles.create', [
'form' => $form
]);
}
Оновіть шаблон вашої Blade-розмітки, щоб включити Bootstrap 5 та ресурси Formello:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Демо форми Laravel News Formello</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-LN+7fdVzj6u52u30Kp6M/trliBMCMKTyK833zpbD+pXdCLuTusPj697FH4R/5mcr" crossorigin="anonymous">
<!-- CSS Formello -->
@formelloStyles
</head>
<body>
@yield('content')
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.bundle.min.js" integrity="sha384-ndDqU0Gzau9qJ1lfW4pNLlhNTkCfHzAVBReH9diLvGRem5+R9g2FzA8ZGN954O5Q" crossorigin="anonymous"></script>
<!-- JS Formello -->
@formelloScripts
</body>
</html>
Тепер у вашому Blade-шаблоні ви можете відобразити форму:
@extends('layouts.app')
@section('content')
<div class="container">
<h2>Створити нову статтю</h2>
{!! $form->render() !!}
</div>
@endsection
Використовуючи Formello, ви також можете реалізувати умовну логіку за допомогою методів isCreating()
і isEditing()
у вашому класі форми для динамічної зміни полів.
Крім того, ви можете створювати власні класи запитів і розширювати клас Metalogico\Formello\Widgets\BaseWidget
.
Використовуючи можливості Formello, Eloquent моделей і Bootstrap 5, ви можете ефективно розробляти та підтримувати форми в додатку. Почніть інтегрувати Formello у свої Laravel проекти, щоб спростити процес створення форм.
Встановіть пакет через Composer та опублікуйте ресурси Formello:
composer require metalogico/laravel-formello
php artisan vendor:publish --tag=formello-assets
Дізнайтеся більше про Formello та перегляньте вихідний код на GitHub.