erdalceylan/php-dynamic-form
Composer 安装命令:
composer require erdalceylan/php-dynamic-form
包简介
Dynamic Form builder
README 文档
README
This Library for Angular, React Ajax request and Android, Ios Api request
Installation
Using Composer
composer require erdalceylan/php-dynamic-form
OR
composer.json
{ "require": { "erdalceylan/php-dynamic-form": "dev-master" } }
USAGE
<?php use \DynamicForm\Form, \DynamicForm\Fields\CheckBox, \DynamicForm\Fields\Radio, \DynamicForm\Fields\Select, \DynamicForm\Fields\Range, \DynamicForm\Fields\Text, \DynamicForm\Fields\Slide, \DynamicForm\Fields\TextArea; use \DynamicForm\Fields\Items\CheckBoxItem, \DynamicForm\Fields\Items\RadioItem, \DynamicForm\Fields\Items\SelectItem, \DynamicForm\Fields\Items\RangeItem; use \DynamicForm\Fields\Validators\Inclusion, \DynamicForm\Fields\Validators\Required, \DynamicForm\Fields\Validators\Email, \DynamicForm\Fields\Validators\Date, \DynamicForm\Fields\Validators\Regex, \DynamicForm\Fields\Validators\StringLength; class TestForm extends Form { public function __construct() { $this->setName("form1") ->setTitle("My EXAMPLE FORM"); ## CheckBox fields $checkBoxField = (new CheckBox()) ->setName("checkBox1") ->setLabel("any check box 1"); $checkBoxField->addValidators([ new Inclusion("data error"), new Required("required error") ]); for($i=0; $i < 5; $i++) { $checkBoxValue = (new CheckBoxItem()) ->setText("any checkBox item label-". $i) ->setValue($i); $checkBoxField->add($checkBoxValue); } ##Radio fields $radioField = (new Radio()) ->setName("radio1") ->setLabel("any radio"); $radioField ->addValidator(new Inclusion("data error")) ->addValidator(new Required("required error")); for($i=0; $i < 8; $i++) { $radioValue = (new RadioItem()) ->setText("any radio item label-".$i) ->setValue($i); $radioField->prepend($radioValue); } ##Select fields $selectField = (new Select()) ->setName("select1") ->setLabel("any select"); $selectField->setValidators([ new Inclusion("data error"), new Required("required error") ]); for($i=15; $i < 24; $i++) { $selectValue = (new SelectItem()) ->setText("any select item label-".$i) ->setValue($i); $selectField->prepend($selectValue); } ##Range fields $rangeField = (new Range()) ->setName("range1") ->setLabel("any range") ->setMin(0) ->setMax(100) ->setValues(new RangeItem(30, 60)); $rangeField ->addValidator(new Inclusion("data error")); ##Text fields $textField = (new Text()) ->setName("text1") ->setLabel("email") ->setValue("info@example.com"); $textField->addValidator(new Email("error email")); ##Text fields $textFieldDate = (new Text()) ->setName("date") ->setLabel("date of birth") ->setValue(""); $textFieldDate ->addValidator(new Date("-35 year", "-18 year","year error")) ->addValidator(new Required("date is required")) ->addValidator(new Regex("/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/", "pattern error")); ##TextArea fields $textAreaField = (new TextArea()) ->setName("textArea1") ->setLabel("Your Message") ->setValue("defaultmessage"); $textAreaField->addValidators([ new Regex("/^[a-z]+$/", "error pattern"), new StringLength(0, 30,"error length"), new Required("error required") ]); ##Slide fields $slideField = (new Slide()) ->setName("slide1") ->setLabel("slide label") ->setMin(0) ->setMax(110) ->setValue(50); $slideField ->addValidator(new Inclusion("data error")) ->addValidator(new Required("required error")); $this->add($checkBoxField) ->append($radioField) ->add($selectField) ->prepend($rangeField) ->prepend($textField) ->prepend($textFieldDate) ->prepend($textAreaField) ->add($slideField); } } $form = new TestForm(); // $form->isValid($_POST);// boolean // $form->getErrorMessages($_POST);// Message[] echo json_encode($form);
###OUTPUT
{
"title":"My EXAMPLE FORM",
"name":"form1",
"fields":[
{
"value":"defaultmessage",
"type":"TextArea",
"name":"textArea1",
"label":"Your Message",
"validators":[
{
"pattern":"\/^[a-z]+$\/",
"type":"Regex",
"message":"error pattern"
},
{
"min":0,
"max":30,
"type":"StringLength",
"message":"error length"
},
{
"type":"Required",
"message":"error required"
}
]
},
{
"value":"",
"type":"Text",
"name":"date",
"label":"date of birth",
"validators":[
{
"min":"1984-02-01 09:42:42",
"max":"2001-02-01 09:42:42",
"type":"Date",
"message":"year error"
},
{
"type":"Required",
"message":"date is required"
},
{
"pattern":"\/^[0-9]{4}-[0-9]{2}-[0-9]{2}$\/",
"type":"Regex",
"message":"pattern error"
}
]
},
{
"value":"info@example.com",
"type":"Text",
"name":"text1",
"label":"email",
"validators":[
{
"type":"Email",
"message":"error email"
}
]
},
{
"values":{
"min":30,
"max":60
},
"min":0,
"max":100,
"step":1,
"type":"Range",
"name":"range1",
"label":"any range",
"validators":[
{
"type":"Inclusion",
"message":"data error"
}
]
},
{
"values":[
{
"text":"any checkBox item label-0",
"value":0,
"checked":false
},
{
"text":"any checkBox item label-1",
"value":1,
"checked":false
},
{
"text":"any checkBox item label-2",
"value":2,
"checked":false
},
{
"text":"any checkBox item label-3",
"value":3,
"checked":false
},
{
"text":"any checkBox item label-4",
"value":4,
"checked":false
}
],
"type":"CheckBox",
"name":"checkBox1",
"label":"any check box 1",
"validators":[
{
"type":"Inclusion",
"message":"data error"
},
{
"type":"Required",
"message":"required error"
}
]
},
{
"values":[
{
"text":"any radio item label-7",
"value":7,
"checked":false
},
{
"text":"any radio item label-6",
"value":6,
"checked":false
},
{
"text":"any radio item label-5",
"value":5,
"checked":false
},
{
"text":"any radio item label-4",
"value":4,
"checked":false
},
{
"text":"any radio item label-3",
"value":3,
"checked":false
},
{
"text":"any radio item label-2",
"value":2,
"checked":false
},
{
"text":"any radio item label-1",
"value":1,
"checked":false
},
{
"text":"any radio item label-0",
"value":0,
"checked":false
}
],
"type":"Radio",
"name":"radio1",
"label":"any radio",
"validators":[
{
"type":"Inclusion",
"message":"data error"
},
{
"type":"Required",
"message":"required error"
}
]
},
{
"values":[
{
"text":"any select item label-23",
"value":23,
"selected":false
},
{
"text":"any select item label-22",
"value":22,
"selected":false
},
{
"text":"any select item label-21",
"value":21,
"selected":false
},
{
"text":"any select item label-20",
"value":20,
"selected":false
},
{
"text":"any select item label-19",
"value":19,
"selected":false
},
{
"text":"any select item label-18",
"value":18,
"selected":false
},
{
"text":"any select item label-17",
"value":17,
"selected":false
},
{
"text":"any select item label-16",
"value":16,
"selected":false
},
{
"text":"any select item label-15",
"value":15,
"selected":false
}
],
"multiple":false,
"type":"Select",
"name":"select1",
"label":"any select",
"validators":[
{
"type":"Inclusion",
"message":"data error"
},
{
"type":"Required",
"message":"required error"
}
]
},
{
"value":50,
"min":0,
"max":110,
"step":1,
"type":"Slide",
"name":"slide1",
"label":"slide label",
"validators":[
{
"type":"Inclusion",
"message":"data error"
},
{
"type":"Required",
"message":"required error"
}
]
}
]
}
erdalceylan/php-dynamic-form 适用场景与选型建议
erdalceylan/php-dynamic-form 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 56 次下载、GitHub Stars 达 4, 最近一次更新时间为 2018 年 02 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「json」 「form」 「ajax」 「dynamic」 「builder」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 erdalceylan/php-dynamic-form 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 erdalceylan/php-dynamic-form 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 erdalceylan/php-dynamic-form 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Kinikit - PHP Application development framework MVC component
Diese Contao 4 Erweiterung stellt Google reCAPTCHA V2 in Form eines neuen Formularfeldes im Formulargenerator bereit. This extension provides Google reCAPTCHA V2 in the form of a new form field in the form generator of Contao Open Source CMS.
ext-json wrapper with sane defaults
A package to cast json fields, each sub-keys is castable
A Laravel Filament Forms slug field.
A jQuery augmented PHP library for creating and validating HTML forms
统计信息
- 总下载量: 56
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 17
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-02-08