alamarnissi/json-dynamic-form-builder
Composer 安装命令:
composer require alamarnissi/json-dynamic-form-builder
包简介
A dynamic JSON form builder library for PHP.
README 文档
README
Create Dynamic Form-Configurations in a JSON Format to render it with your Frontend Environment of Choice
Features
- ✅ Define forms using object-oriented PHP
- 🧱 Supports all common input fields (input, checkbox, radio, select, textarea)
- 📝 Textual elements like headlines, paragraphs, quotes
- 📦 Container support (planned): Group fields in columns or sections
- 🧩 Extensible architecture (add your own field types!)
- 🔄 JSON serialization: Export your form to use in frontend apps
- 🧪 Unit test ready and clean structure
- ⚙️ Composer-ready (planned for Packagist)
Supported Form Elements
Form Fields
- Input with different Types like "text", "color", "range, "number"
- Textarea
- Single Checkbox
- Checkbox Groups
- Single RadioButton
- RadioButton Group
- Select / Select (multiple)
Text Elements
- Headlines (h1 - h6)
- Paragraphs
- Quote
- Container (div)
Extendable
Create your own Form or Text Element like Image-Uploads or totally custom Elements.
Directory Structure
JsonFormBuilder/ ├── JsonForm/ # Core classes │ ├── FormField/ # Input field types │ ├── FormTextElement/ # Text elements (headlines, paragraphs) │ ├── FormFieldCollection.php │ ├── ... ├── tests/ # PHPUnit tests ├── composer.json └── README.md
Planned Extensions
| Feature | Status |
|---|---|
| Field validation rules | 🔜 Planned |
| Conditional logic support | 🔜 Planned |
| Container/grouping layout | 🔜 Planned |
| API for frontend usage | 🔜 Planned |
| Vue/React renderer | 🔜 Planned |
| Submission endpoint support | 🔜 Planned |
Planned Extensions
| Class | Description |
|---|---|
JsonForm |
Main form container. |
FormFieldCollection |
Manages fields. |
FormTextElementCollection |
Manages headings, paragraphs, etc. |
Input, Checkbox, Select, etc. |
Various field types. |
Headline1 through Headline6 |
Header elements. |
Paragraph, Quote |
Textual elements. |
Basic Example
Code
use JsonFormBuilder\JsonForm; use JsonFormBuilder\JsonForm\FormField\Checkbox; use JsonFormBuilder\JsonForm\FormField\CheckboxGroup; use JsonFormBuilder\JsonForm\FormField\Input; use JsonFormBuilder\JsonForm\FormField\Option; use JsonFormBuilder\JsonForm\FormField\OptionCollection; use JsonFormBuilder\JsonForm\FormFieldCollection; use JsonFormBuilder\JsonForm\FormTextElement\Headline1; use JsonFormBuilder\JsonForm\FormTextElement\Paragraph; use JsonFormBuilder\JsonForm\FormTextElementCollection; use Ramsey\Uuid\Uuid; $formFields = FormFieldCollection::emptyList() ->add(new Input(Uuid::uuid4()->toString(), 'Input', 3)) ->add(new Checkbox(Uuid::uuid4()->toString(), 'Checkbox', 4)) ->add(new CheckboxGroup( Uuid::uuid4()->toString(), 'CheckboxGroup', 5, OptionCollection::emptyList() ->add(new Option('A', 'A')) ->add(new Option('B', 'B')) )); $formElements = FormTextElementCollection::emptyList() ->add(new Headline1(Uuid::uuid4()->toString(), 'Your First Dynamic Form', 1)) ->add(new Paragraph(Uuid::uuid4()->toString(), 'Create your custom Form', 2)); $form = new JsonForm(Uuid::uuid4()->toString(), $formFields, $formElements);
JSON
{
"jsonFormId":"2febf4cd-9c54-4ca4-b619-b51f6321dc8e",
"formFields":[
{
"formFieldId":"afa99e5a-b585-4d3b-8d03-6c196b7c16eb",
"label":"Input",
"defaultValue":null,
"required":false,
"visible":true,
"position":3,
"formFieldType":"input",
"inputType":"text",
"class":"JsonFormBuilder\\JsonForm\\FormField\\Input"
},
{
"formFieldId":"5ab7faba-3547-46c5-a237-6164879c339d",
"label":"Checkbox",
"position":4,
"defaultValue":false,
"required":false,
"visible":true,
"formFieldType":"checkbox",
"class":"JsonFormBuilder\\JsonForm\\FormField\\Checkbox"
},
{
"formFieldId":"1f4ca288-9f04-48b3-ba93-8367a46f84d4",
"formFieldType":"checkbox_group",
"label":"CheckboxGroup",
"position":5,
"defaultValue":[
],
"required":false,
"visible":true,
"options":[
{
"label":"B",
"value":"B"
},
{
"label":"A",
"value":"A"
}
],
"class":"JsonFormBuilder\\JsonForm\\FormField\\CheckboxGroup"
}
],
"formTextElements":[
{
"formTextElementId":"9a9c41b1-3ecf-4eef-a383-98567b0c8a28",
"formTextElementType":"h1",
"text":"Your·First·Dynamic·Form",
"position":1,
"class":"JsonFormBuilder\\JsonForm\\FormTextElement\\Headline1"
},
{
"formTextElementId":"980954c1-acc5-4025-bc2e-97b4962fcc4f",
"formTextElementType":"p",
"text":"Create·your·custom·Form",
"position":2,
"class":"JsonFormBuilder\\JsonForm\\FormTextElement\\Paragraph"
}
]
}
alamarnissi/json-dynamic-form-builder 适用场景与选型建议
alamarnissi/json-dynamic-form-builder 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 06 月 09 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 alamarnissi/json-dynamic-form-builder 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 alamarnissi/json-dynamic-form-builder 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 1
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 8
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-06-09