PHPackages                             lucasnribeiro/form-forge - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. lucasnribeiro/form-forge

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

lucasnribeiro/form-forge
========================

A small performatic form library for PHP

1.0.1(1y ago)08MITPHPPHP ^7.0 || ^8.0

Since Jul 18Pushed 1y ago1 watchersCompare

[ Source](https://github.com/Lucasnribeiro/form-forge)[ Packagist](https://packagist.org/packages/lucasnribeiro/form-forge)[ RSS](/packages/lucasnribeiro-form-forge/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (4)Versions (3)Used By (0)

[![Packagist Version](https://camo.githubusercontent.com/732d8c43c259f11f8dcf4a3e8b4027bafa2527dfe5a57bd024cf244f6b209195/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f4c756361736e7269626569726f2f666f726d2d666f726765)](https://camo.githubusercontent.com/732d8c43c259f11f8dcf4a3e8b4027bafa2527dfe5a57bd024cf244f6b209195/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f4c756361736e7269626569726f2f666f726d2d666f726765)[![Packagist Dependency Version](https://camo.githubusercontent.com/563b5098f32ad994d9779fadd54617cde1bf9750ffcebdb1a6c54f245c4156f2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646570656e64656e63792d762f4c756361736e7269626569726f2f666f726d2d666f7267652f706870)](https://camo.githubusercontent.com/563b5098f32ad994d9779fadd54617cde1bf9750ffcebdb1a6c54f245c4156f2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646570656e64656e63792d762f4c756361736e7269626569726f2f666f726d2d666f7267652f706870)

FormForge
=========

[](#formforge)

FormForge is a OOP based form builder for PHP. The goal of this project is to be an example of how to build libraries using composer autoloader and PSR-4. The abstractions contained here can be ported into many other projects that uses OOP. This is not production ready, it's meant to be just an study.

Dependencies
------------

[](#dependencies)

- Composer 2.4+
- PHP 7.0+ or 8.0+

Features
--------

[](#features)

- Fluent API for easy form creation and customization
- Support for various input types (text, email, select, etc.)
- Customizable labels and submit buttons
- Form method and action customization
- Basic validation support
- Extensible architecture

Installation
------------

[](#installation)

You can install FormForge via Composer:

```
composer require lucasnribeiro/form-forge
```

Class UML Diagram
-----------------

[](#class-uml-diagram)

[![UML Classes](https://raw.githubusercontent.com/Lucasnribeiro/form-forge/main/diagrams/classes.png)](https://raw.githubusercontent.com/Lucasnribeiro/form-forge/main/diagrams/classes.png)

Basic Usage
-----------

[](#basic-usage)

```
use Lucasnribeiro\FormForge\Form;
use Lucasnribeiro\FormForge\Inputs\InputFactory;

$form = new Form(new InputFactory());

$form->setMethod('post')
     ->setAction('/submit-form')
     ->addField('name', 'text', ['label' => 'Your Name'])
     ->addField('email', 'email', ['label' => 'Your Email'])
     ->addField('country', 'select', [
         'label' => 'Country',
         'options' => ['US' => 'United States', 'CA' => 'Canada', 'UK' => 'United Kingdom']
     ])
     ->submitButton()
         ->setValue('Send')
         ->addClass('btn-primary');

echo $form->render();
```

Customizing Fields
------------------

[](#customizing-fields)

You can customize individual fields after adding them:

```
$form->addField('email', 'email', ['label' => 'Your Email'])
     ->field('email')
     ->addClass('form-control')
     ->label()
     ->addClass('form-label');
```

Customizing the Submit Button
-----------------------------

[](#customizing-the-submit-button)

```
$form->submitButton()
     ->setValue('Send Message')
     ->addClass('btn')
     ->addClass('btn-primary')
     ->addAttribute('id', 'contact-submit');
```

Example using Tailwind
----------------------

[](#example-using-tailwind)

```
