PHPackages                             fombuilder/dynamic-form - 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. fombuilder/dynamic-form

ActiveProject

fombuilder/dynamic-form
=======================

The skeleton application for the Laravel framework.

00Blade

Since Apr 6Pushed 2d agoCompare

[ Source](https://github.com/hridoy09/dynamic-form-builder)[ Packagist](https://packagist.org/packages/fombuilder/dynamic-form)[ RSS](/packages/fombuilder-dynamic-form/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Dynamic Form
============

[](#dynamic-form)

A Laravel package for building dynamic forms with a clean admin builder, Blade rendering, validation, submission storage, file uploads, and submission management.

Overview
--------

[](#overview)

Dynamic Form helps you create and manage forms without hardcoding each field by hand. Create forms from a builder UI, render them in Blade with a single directive, and collect submissions directly in your Laravel application.

Features
--------

[](#features)

- Visual form builder
- Dynamic field definitions
- Built-in Laravel validation support
- Blade directive rendering
- Submission storage in database
- File upload handling
- Submission list and review screen
- Configurable route prefixes and storage disk

Requirements
------------

[](#requirements)

- PHP 8.3+
- Laravel 13+

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

[](#installation)

### Install from Packagist

[](#install-from-packagist)

```
composer require fombuilder/dynamic-form
```

### Install as a local path package

[](#install-as-a-local-path-package)

Add this to your application's `composer.json`:

```
{
    "repositories": [
        {
            "type": "path",
            "url": "packages/dynamic-form",
            "options": {
                "symlink": true
            }
        }
    ]
}
```

Then require the package:

```
composer require fombuilder/dynamic-form:*
```

Setup
-----

[](#setup)

Run the package migrations:

```
php artisan migrate
```

Create the storage symlink for uploaded files:

```
php artisan storage:link
```

Publish the config file if you want to customize settings:

```
php artisan vendor:publish --tag=dynamic-form-config
```

Publish the package views if you want to customize the UI:

```
php artisan vendor:publish --tag=dynamic-form-views
```

Configuration
-------------

[](#configuration)

Configuration file:

```
config/dynamic-form.php
```

Default configuration:

```
return [
    'route_prefix' => 'dynamic-forms',
    'route_middleware' => ['web'],
    'public_route_prefix' => 'forms',
    'public_route_middleware' => ['web'],
    'storage_disk' => env('DYNAMIC_FORM_STORAGE_DISK', 'public'),
    'upload_directory' => 'dynamic-forms',
];
```

Environment example:

```
DYNAMIC_FORM_STORAGE_DISK=public
```

Routes
------

[](#routes)

### Builder routes

[](#builder-routes)

- `GET /dynamic-forms`
- `GET /dynamic-forms/create`
- `POST /dynamic-forms`
- `GET /dynamic-forms/{form}/edit`
- `PUT /dynamic-forms/{form}`
- `GET /dynamic-forms/{form}/submissions`

### Public routes

[](#public-routes)

- `GET /forms/{slug}`
- `POST /forms/{slug}`

Quick Start
-----------

[](#quick-start)

1. Visit `/dynamic-forms`
2. Click `Create form`
3. Add form details such as name, slug, button label, and success message
4. Add your fields and validation rules
5. Save the form
6. Open the public form URL using the slug
7. Submit the form and review responses from the submissions page

Available Field Types
---------------------

[](#available-field-types)

- `text`
- `email`
- `number`
- `textarea`
- `select`
- `radio`
- `checkbox`
- `file`
- `date`

Field Options
-------------

[](#field-options)

Each field can include:

- Label
- Field name
- Type
- Placeholder
- Help text
- Options
- Validation rules
- Required status
- Sort order

For `select`, `radio`, and multi-value `checkbox`, add one option per line.

Example:

```
Basic
Standard
Premium

```

Validation Rules
----------------

[](#validation-rules)

The validation input accepts normal Laravel validation rules.

Examples:

```
required
max:255
required|email|max:255
nullable|mimes:pdf,jpg,png|max:2048
required|min:10|max:500

```

Do not wrap rules in backticks.

Wrong:

```
`email`

```

Correct:

```
email

```

Rendering in Blade
------------------

[](#rendering-in-blade)

Render any active form by slug:

```
@dynamicForm('contact-form')
```

Example:

```
@extends('layouts.app')

@section('content')
    Contact Us

    @dynamicForm('contact-form')
@endsection
```

Public Form Example
-------------------

[](#public-form-example)

If your form slug is `contact-form`, the public URL will be:

```
/forms/contact-form

```

Submission Management
---------------------

[](#submission-management)

Each submission stores:

- Form reference
- Submitted data
- Uploaded file metadata
- IP address
- User agent
- Created timestamp

To view submissions:

1. Open `/dynamic-forms`
2. Select a form
3. Click `Submissions`

Example Use Cases
-----------------

[](#example-use-cases)

### Contact Form

[](#contact-form)

Fields:

- `name` as `text`
- `email` as `email`
- `message` as `textarea`

Validation:

```
name: required|max:255
email: required|email|max:255
message: required|min:10|max:2000

```

### Job Application Form

[](#job-application-form)

Fields:

- `full_name` as `text`
- `email` as `email`
- `resume` as `file`

Validation:

```
full_name: required|max:255
email: required|email|max:255
resume: required|mimes:pdf,doc,docx|max:2048

```

Testing
-------

[](#testing)

Run the package test:

```
php artisan test --filter=DynamicFormPackageTest
```

Troubleshooting
---------------

[](#troubleshooting)

### SQLite driver error

[](#sqlite-driver-error)

If you see `could not find driver`, your PHP CLI likely does not have `pdo_sqlite` enabled.

Check loaded modules:

```
php -m
```

### Validation method error

[](#validation-method-error)

If you see an error like `Method Illuminate\\Validation\\Validator::validate`email` does not exist`, a validation rule was entered with backticks.

Use `email`, not ``email``.

### Uploaded files are not accessible

[](#uploaded-files-are-not-accessible)

Make sure the storage symlink exists:

```
php artisan storage:link
```

Package Structure
-----------------

[](#package-structure)

```
config/
database/
resources/
routes/
src/
composer.json
README.md

```

License
-------

[](#license)

MIT

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance65

Regular maintenance activity

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/75466316?v=4)[Md Abul Hasem Redoy](/maintainers/hridoy09)[@hridoy09](https://github.com/hridoy09)

---

Top Contributors

[![hridoy09](https://avatars.githubusercontent.com/u/75466316?v=4)](https://github.com/hridoy09 "hridoy09 (8 commits)")

### Embed Badge

![Health badge](/badges/fombuilder-dynamic-form/health.svg)

```
[![Health](https://phpackages.com/badges/fombuilder-dynamic-form/health.svg)](https://phpackages.com/packages/fombuilder-dynamic-form)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
