mvccore / ext-form
MvcCore - 扩展 - 表单 - 基于HTML5控件创建和渲染网页表单的表单扩展,用于处理和验证提交的用户数据,管理表单会话以保存默认值,管理用户输入错误,以及扩展和开发自定义字段和字段组。
v5.2.27
2024-09-04 08:20 UTC
Requires
- php: >=5.4.0
- mvccore/mvccore: ^5.2.33
Suggests
- mvccore/ext-form-field-button: MvcCore form extension with button fields and input submit fields.
- mvccore/ext-form-field-date: MvcCore form extension with input field types date, datetime, time, week and month.
- mvccore/ext-form-field-numeric: MvcCore form extension with input field types number and range.
- mvccore/ext-form-field-selection: MvcCore form extension with fields select, country select, checkbox(es) and radios.
- mvccore/ext-form-field-special: MvcCore form extension with input type file and color.
- mvccore/ext-form-field-text: MvcCore form extension with input field types text, email, password, search, tel, url and textarea field.
- mvccore/ext-form-validator-special: MvcCore form extension with special text and numeric validators.
- dev-master
- v5.2.27
- v5.2.26
- v5.2.25
- v5.2.23
- v5.2.22
- v5.2.21
- v5.2.20
- v5.2.19
- v5.2.18
- v5.2.17
- v5.2.16
- v5.2.15
- v5.2.14
- v5.2.13
- v5.2.12
- v5.2.11
- v5.2.10
- v5.2.9
- v5.2.8
- v5.2.7
- v5.2.6
- v5.2.5
- v5.2.4
- v5.2.3
- v5.2.2
- v5.2.1
- v5.2.0
- v5.1.48
- v5.1.47
- v5.1.46
- v5.1.45
- v5.1.44
- v5.1.43
- v5.1.42
- v5.1.41
- v5.1.40
- v5.1.39
- v5.1.38
- v5.1.37
- v5.1.36
- v5.1.35
- v5.1.34
- v5.1.33
- v5.1.32
- v5.1.31
- v5.1.30
- v5.1.29
- v5.1.28
- v5.1.27
- v5.1.26
- v5.1.25
- v5.1.24
- v5.1.23
- v5.1.22
- v5.1.21
- v5.1.20
- v5.1.19
- v5.1.18
- v5.1.17
- v5.1.16
- v5.1.15
- v5.1.14
- v5.1.13
- v5.1.12
- v5.1.11
- v5.1.10
- v5.1.9
- v5.1.8
- v5.1.7
- v5.1.6
- v5.1.5
- v5.1.4
- v5.1.3
- v5.1.2
- v5.0.3
- v5.0.2
- v5.0.1
- v5.0.0
- v4.3.1
- v4.2.0
- v4.1.1
- v4.1.0
- v4.0.0
- v3.2.2
- v3.2.1
- v3.2.0
- v3.1.3
- v3.1.0
- v3.0.2
- v3.0.1
- v3.0.0
- v2.0.0
- v1.0.1
- v1.0.0
This package is auto-updated.
Last update: 2024-09-04 08:35:02 UTC
README
这不是包含所有表单字段类的包!
如果您只想快速创建一个表单,
请使用包含所有表单字段和验证器的mvccore/ext-form-all包!
MvcCore 扩展,包含基础表单和字段类,用于使用HTML5控件创建和渲染网页表单,处理和验证提交的用户数据,管理表单会话以保存默认值,管理用户输入错误,以及扩展和开发自定义字段和字段组。
此包不能独立存在,因为没有任何表单字段扩展(如:mvccore/ext-form-field-*),因此无法在您的表单实例中创建特定字段。如果您想使用所有字段和验证器,请使用扩展mvccore/ext-form-all而不是mvccore/ext-form。此扩展只是整个功能的一部分,以避免在小应用中包含过多的字段类代码。
安装
composer require mvccore/ext-form
然后您需要安装以下任何表单字段扩展:mvccore/ext-form-field-*
composer require mvccore/ext-form-field-text
表单可扩展包映射
mvccore/ext-form-all- 主要的巨大扩展,包含所有子扩展以渲染网页表单,处理提交,管理字段、会话和错误,包含所有表单包的扩展。
- 处理提交,管理字段、会话和错误,包含所有表单包的扩展。mvccore/ext-form- 仅包含基础表单和字段类的表单扩展。mvccore/ext-form-field-text- 字段扩展,包含文本、电子邮件、密码、搜索、电话、URL和textarea类型的输入字段。mvccore/ext-form-field-numeric- 字段扩展,包含数字和范围类型的输入字段。mvccore/ext-form-field-selection- 字段扩展,包含选择字段、国家选择、复选框、单选按钮和颜色。mvccore/ext-form-field-date- 字段扩展,包含日期、日期时间、时间、星期和月份类型的输入字段。mvccore/ext-form-field-button- 字段扩展,包含按钮字段和提交输入字段。mvccore/ext-form-field-file- 字段扩展,包含具有上传验证的文件输入类型。mvccore/ext-form-validator-special- 仅包含特殊文本和数字验证器的验证器扩展。
主要功能
- 创建具有变量分配字段的动态表单
- 所有HTML5字段和属性
- 每个字段都内置了与其类型相对应的验证器
- 自动/可定制的CSRF和XSS保护
- 会话中管理错误消息
- 默认或通过模板重定义表单
- 默认或通过模板重定义任何自定义或内置字段
- 非常可扩展的表单类和字段类
- 非常可扩展的任何字段的支持javascripts
- 翻译,会话数据管理
- 多个提交按钮具有不同的/自定义的结果状态
字段
mvccore/ext-form中的内置字段- 基本的
Field和FieldsGroup类,用于扩展任何控件以实现自定义功能 input:hiddendatalist
- 基本的
mvccore/ext-form-field-text中的扩展文本字段input:text、:password、:email、:search、:tel、:urltextarea
mvccore/ext-form-field-numeric中的扩展数值字段input:number、:range(滑块)和多个input:range
mvccore/ext-form-field-selection中的扩展选择字段select(多选)- 国家
select input:checkboxinput:checkbox组input:radio(单选按钮,开关)input:color
mvccore/ext-form-field-date中的扩展日期字段input:dateinput:datetime-localinput:timeinput:weekinput:month
mvccore/ext-form-field-button中的扩展按钮字段input:buttoninput:resetinput:submitinput:imagebutton:buttonbutton:resetbutton:submit
mvccore/ext-form-field-file中的扩展文件字段- 具有多个选项和验证的
input:file
- 具有多个选项和验证的
验证器
每个表单控件都会根据类型自动配置验证器。
- 每个字段和
mvccore/ext-form中的内置验证器- 必填、只读、禁用...
- 安全字符串(在响应中安全显示提交值时保持字符 - XSS保护)
mvccore/ext-form-field-text中的扩展文本字段- email - 检查电子邮件是否为有效格式
- 最小和最大文本长度
- password - 通过配置的规则检查密码强度
- pattern - 通过
pattern控制属性使用PHP preg_match - url(检查字符串是否为url)
- tel(仅用于清除电话号码中不允许的字符)
- ZIP代码(检查国际ZIP代码格式)
mvccore/ext-form-field-numeric中的扩展数值字段- number(整数或浮点数,最小值、最大值和步长)
- range(最小值、最大值和步长)
mvccore/ext-form-field-selection中的扩展选择字段- checkbox - checked
- 选项中的值(检查提交的值是否存在于选项中,对于选择、国家选择、复选框组和单选按钮)
- 选定的最小/最大选项
- 十六进制透明颜色
mvccore/ext-form-field-date中的扩展日期字段- date - 如果日期格式正确,并检查最小值、最大值和步长
- datetime、time、week和month验证器是日期验证器的扩展
mvccore/ext-form-field-file中的扩展文件字段- 文件验证器用于检查上传文件(通过魔术字节等)中所有可能的内容
mvccore/ext-form-validator-special中的扩展特殊验证器- EU公司ID/VAT ID
- 信用卡(仅检查数字校验和)
- iban银行账户号码(仅检查数字校验和)
- 十六进制数
- IP地址(IPv4和IPv6格式检查)
- 国际ZIP代码格式检查
所有功能介绍
- 创建、渲染和提交动态创建的网页表单,无需指定任何静态模型类(如经典.NET MVC表单)
- 实现了所有HTML5表单属性,所有HTML5字段及其HTML5和旧版属性
- 每个字段都有其内置默认验证器,也可以定义任何其他或所有字段验证器
- 自动/可定制的CSRF和XSS保护
- 每个表单(GET/POST)都有自己的跨站请求伪造(CSRF)隐藏输入,包含token名称和token值,以检查表单是否由特定用户会话提交,而不是由任何外部攻击者JavaScript代码
- 可以自行管理CSRF保护
- 所有可能传递危险字符进行XSS攻击的字段都默认由XSS安全字符串验证器保护。可以移除此验证器并实现自己的保护
- 错误消息 - 仅在表单提交时存储在会话中,自动渲染
- 模板自动渲染或使用自定义模板
- 自然渲染的表单将每个控件放在空div中
- 渲染的自定义模板应包含任何内容,CSRF令牌将由
$form->RenderFormBegin();自动创建 - 任何复杂的表单控件也可以有自己的自定义模板
- 任何表单或控件模板都自动分配来自其局部
$this上下文和通过控制器传递到表单的原始$controller->View(在__construct();中)的属性。
- 可以扩展表单本身、任何字段、字段组或验证器,可以使用内置接口、抽象类和特质
- 为任何字段类型提供自定义js/css资源
- 可以在表单HTML体后立即渲染(默认)
- 可以通过自定义渲染器或自定义响应附加脚本/解决方案以外部链接文件的方式渲染
- 可以通过检出和扩展:"mvccore/ext-form-js" 来扩展内置的JavaScript
- 翻译,会话数据管理
- 每个可见表单都应通过配置的翻译器调用转换为表单实例
- 从会话加载默认值或上一次提交的值
- 可以在提交后选择性地清除会话
- 多个提交按钮具有不同的/自定义的结果状态
- 声明错误URL、成功URL(用于特殊开发者实现的上一级和下一级URL)
- 可以为任何提交按钮定义自定义表单结果状态以识别下一步操作
- 表单具有内置的语言属性(用于翻译器)和locale属性(用于高级字段和验证器)
示例
基本示例
在 'Contact:Default' 路由中初始化表单
$form = (new \MvcCore\Ext\Form($mvcCoreController)) ->SetId('newsletter') ->SetAction( $mvcCoreController->Url('Contact:Submit') ) ->SetSuccessUrl( $mvcCoreController->Url('Contact:Submitted') ) ->SetErrorUrl( $mvcCoreController->Url('Contact:Default') ); $email = (new \MvcCore\Ext\Form\Email) ->SetName('mail') ->SetLabel('Your email:') ->SetRequired(); $submit = (new \MvcCore\Ext\Form\SubmitButton) ->SetName('submit') ->SetValue('Send'); $form->AddFields($email, $submit); $mvcCoreController->view->newsletterForm = $form;
在 'Contact:Default' 路由的模板中渲染表单
<body> <?php echo $this->newsletterForm; ?> </body>
在 'Contact:Submit' 路由中提交表单
// ... form initialization again into var: $form // process all configured validators by: $form->Submit(); list($result, $data, $errors) = $form->Submit(); // if data has been submitted successfuly, // store user email somewhere in database: if ($result == \MvcCore\Ext\Form::RESULT_SUCCESS) { // store user email somewhere by any custom model class (User): (new User())->SetEmail($data['mail'])->Save(); // clear form session space to not display filled // data by current user to another users $form->ClearSession(); } // redirect user to configured success // or error url (by internal $form->Result property): $form->SubmittedRedirect();