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.
Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!
Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!
Досліджуйте новий пакет Data Model для PHP, який спрощує процес гідратації об'єктів без зайвих складнощів! Дізнайтеся, як впровадження типобезпечних об'єктів може революціонізувати ваш підхід до розробки, читаючи нашу статтю