kris/laravel-form-builder
Form builder for Laravel 5 inspired by Symfony's form builder. It creates forms that are easy to modify and reuse, supports Bootstrap 3 by default, and integrates seamlessly with Laravel's FormBuilder for quick, customizable form creation. Ideal for reusable, maintainable forms and fast development.
Architecture fit
FormBuilder from the container and produces form objects from classes extending Kris\LaravelFormBuilder\Form. This maps cleanly onto the standard server-rendered Laravel request lifecycle: controller → form object → Blade ({!! form($form) !!}).buildForm), rendering (templates), and validation (rules, isValid(), getErrors(), redirectIfNotValid()) is the real architectural value: field definitions move out of Blade into testable, composable PHP classes that can be modified programmatically per context (remove, compose, child forms, Collection/ParentType).template/template_prefix. Any design system that is not Bootstrap 3 requires us to own a template set — that is the main architectural tax.Integration feasibility
composer require, provider registration, and facade alias. For Laravel ≥5.5, verify extra.laravel auto-discovery exists in the package composer.json; if absent, manual registration in config/app.php is still required — a papercut, not a blocker.laravelcollective/html and self-registers Form/Html aliases if not already bound. If we already depend on Collective, this is neutral; if not, we are accepting a new, historically low-maintenance transitive dependency.php artisan make:form Forms/SongForm --fields="name:text,lyrics:textarea" plus createByArray() for dynamic forms gives a low-friction pilot: one controller, one form class, one Blade view, and we have a working vertical slice in days, not weeks.setModel), getFieldValues(), and redirectIfNotValid() remove a meaningful amount of controller boilerplate across large CRUD surfaces — this is where the measurable ROI sits.Technical risk
laravelcollective/html is on a legacy support line. Any future Laravel major bump collides with it, and we do not control the fix.rules, but controllers/models may also validate. Two sources of truth degrade over time and produce inconsistent error surfaces.Key questions
composer.json declare extra.laravel auto-discovery, or do we need manual provider/facade registration on every install?laravelcollective/html, and can we accept it if we are not already using it?Stack fit
Migration path
laravelcollective/html usage confined behind package templates so an eventual replacement is a contained change rather than a codebase-wide sweep.Compatibility
kris/laravel-form-builder constraint; do not float 1.* in a large app.laravel-form-builder-bs4) or a custom template set against our design system before committing — the template decision is the hardest to reverse.Sequencing
rules vs controller validation ownership, label translation, template override location).Maintenance
Support
Scaling
Failure modes
rules and controller/model rules, producing inconsistent or missing error messages.getFieldValues() returns only defined fields, so fields added to the UI but not to the form class are dropped without an error — a data-integrity risk worth an explicit test.Ramp-up
How can I help you explore Laravel packages today?