mvccore / ext-form-all
MvcCore - 扩展 - 表单 - 所有 - 使用HTML5控件创建和渲染Web表单的表单扩展,处理和验证提交的用户数据,管理表单会话以设置默认值,管理用户输入错误,以及扩展和开发自定义字段和字段组。
v5.2.1
2023-10-03 11:19 UTC
Requires
- php: >=5.4.0
- mvccore/ext-form: ^5.2
- mvccore/ext-form-field-button: ^5.2
- mvccore/ext-form-field-date: ^5.2
- mvccore/ext-form-field-file: ^5.2
- mvccore/ext-form-field-numeric: ^5.2
- mvccore/ext-form-field-selection: ^5.2
- mvccore/ext-form-field-text: ^5.2
- mvccore/ext-form-validator-special: ^5.2
- mvccore/mvccore: ^5.2
This package is auto-updated.
Last update: 2024-09-26 14:24:08 UTC
README
这是一个仅连接所有表单字段类和验证器的元数据包!
如果您只是想快速创建一个表单,请使用此包。
如果您想创建只包含必要代码的精确应用程序,
请使用 mvccore/ext-form 包,并搭配您喜欢的
表单字段子包和验证器,如 (mvccore/ext-form-field-*)。
MvcCore 扩展,包含所有子扩展,用于创建和渲染Web表单,处理和验证提交的用户数据,管理表单会话以设置默认值,管理用户输入错误,以及扩展和开发自定义字段和字段组。
此包包含所有MvcCore表单和字段类,大约有130个*.php文件包含类、接口和特性。它可以不使用任何其他MvcCore表单子扩展。但如果你想要创建只包含应用程序所需代码的应用程序,你不想使用这个庞大的元数据包,而是使用基础表单包 (mvccore/ext-form) 和特定的字段包,如:mvccore/ext-form-field-*,以便在空表单实例中创建特定的字段。
安装
composer require mvccore/ext-form-all
表单可扩展包映射
如果您使用基础表单包 (mvccore/ext-form) 和特定字段包(如:mvccore/ext-form-field-*) 与MvcCore表单结合使用来构建只包含应用程序所需代码的应用程序,则需要此映射。
如果您使用此包 mvccore/ext-form-all,则不需要此映射。
mvccore/ext-form-all- 包含所有子扩展的主大型扩展,用于渲染Web表单,处理
提交、管理字段、会话和错误,包含所有表单包的扩展。mvccore/ext-form- 包含基础表单和字段类的表单扩展。mvccore/ext-form-field-text- 包含文本、电子邮件、密码、搜索、电话、URL和文本区域等输入字段类型的字段扩展。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保护
- 在会话中管理错误消息
- 默认或通过模板重定义表单
- 默认或通过模板重定义任何自定义或内置字段
- 非常可扩展的表单类和字段类
- 非常可扩展的用于任何字段的javascript支持
- 翻译,会话数据管理
- 为多个提交按钮设置不同的/自定义的结果状态
字段
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中的扩展文本字段- 电子邮件 - 检查电子邮件是否有效
- 最小/最大文本长度
- 密码 - 通过配置的规则检查密码强度
- 模式 - 通过
pattern控制属性使用PHP preg_match - URL(检查字符串是否为URL)
- 电话(仅用于清除电话号码中不允许的字符)
- ZIP代码(检查国际ZIP代码格式)
mvccore/ext-form-field-numeric中的扩展数字字段- 数字(整数或浮点数,最小值、最大值和步长)
- 范围(最小值、最大值和步长)
mvccore/ext-form-field-selection中的扩展选择字段- 复选框 - 已选中
- 选项值(检查提交的值是否存在于选项中,用于选择、国家选择、复选框组和单选按钮)
- 选择的最小/最大选项
- 十六进制非透明颜色
mvccore/ext-form-field-date中的扩展日期字段- 日期 - 检查日期格式是否正确,并检查最小值、最大值和步长
- 日期时间、时间、周和月验证器扩展自日期验证器
mvccore/ext-form-field-file中的扩展文件字段- 文件验证器检查上传文件的所有可能内容(通过魔数和更多)
mvccore/ext-form-validator-special中的扩展特殊验证器- 欧盟公司ID/VAT ID
- 信用卡(仅检查数字校验和)
- IBAN银行账户号码(仅检查数字校验和)
- 十六进制数
- IP地址(检查IPv4和IPv6格式)
- 国际邮政编码格式验证
所有功能介绍
- 创建、渲染和提交动态生成的网页表单,无需指定任何静态模型类(类似于经典.NET MVC表单)
- 实现了所有HTML5表单属性,所有HTML5字段及其HTML5和旧版属性
- 每个字段都有其内置默认验证器,可以定义任何其他或所有字段验证器
- 自动/可定制的CSRF和XSS保护
- 每个表单(GET/POST)都有自己的跨站请求伪造(CSRF)隐藏输入,包含令牌名称和令牌值,以检查表单是否由特定用户会话提交,而不是任何外部攻击者JavaScript代码
- 可以自行管理CSRF保护
- 所有可能传递危险字符以进行XSS攻击的字段都默认由XSS安全字符串验证器保护。可以移除此验证器并实现自己的保护
- 错误消息 - 仅在表单提交时存储在会话中,自动渲染
- 模板自动渲染或由自定义模板渲染
- 自然渲染的表单在每个控件中都有自己的空div
- 自定义模板应包含任何内容,CSRF令牌将由
$form->RenderFormBegin();自动创建 - 任何复杂表单控件也可以有自己的自定义模板
- 任何表单或控件模板都会自动分配来自其局部
$this上下文的属性和通过表单__construct();传入的控制器原始$controller->View。
- 可以扩展表单本身,任何字段、字段组或验证器,可以使用内置接口、抽象类和特性
- 任何字段类型都可以使用自定义js/css资产
- 可以在表单HTML主体后立即渲染(默认)
- 可以通过自定义渲染器或自定义响应附加脚本/解决方案以外部链接文件的形式渲染
- 可以通过检出并扩展:"mvccore/ext-form-js"来扩展内置JavaScript
- 翻译,会话数据管理
- 每个可见表单都应通过配置的调用可翻译为表单实例
- 从会话中加载默认值或之前的提交值
- 可以选择在提交后清除会话
- 为多个提交按钮设置不同的/自定义的结果状态
- 声明错误URL、成功URL(对于特殊开发者实现的上一级和下一级URL)
- 可以为任何提交按钮定义自定义表单结果状态以识别下一步操作
- 表单有内置的语言属性(用于翻译)和高级字段/验证器的区域设置属性
示例
基本示例
在'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();