Швидке створення форм на основі ваших Eloquent моделей з Laravel Formello

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 22 серпня, 2025
Вам коли-небудь доводилося витрачати час на створення форм у Laravel? Ознайомтесь із пакетом Formello, який спростить цей процес, дозволяючи генерувати форми автоматично, використовуючи ваші моделі Eloquent!

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.