mvccore/ext-form-field-numeric

MvcCore - 扩展 - 表单 - 字段 - 数值 - 表单字段类型 - 输入:number 和 输入:range。

v5.2.5 2024-08-09 14:30 UTC

README

Latest Stable Version License PHP Version

MvcCore 表单扩展,包含输入字段类型 number 和 range。

安装

composer require mvccore/ext-form-field-numeric

字段和默认验证器

  • input:number
    • 数字
      • 默认配置
      • 按照特定规则解析原始用户输入,以解析整数/浮点数,或通过 Intl PHP 扩展
      • 最小值、最大值和步长验证
    • 整数
      • 默认未配置
      • Number 相同的验证,只是增加了对 int 的检查(是否有精度值)
    • 浮点数
      • 默认未配置
      • Number 相同的验证,总是返回 float 类型
  • input:range(从 input:number 扩展而来)
    • 范围
      • 默认配置
      • 直接从 Number 验证器扩展,功能相同,仅针对两个数字

特性

  • 始终在服务器端检查 requireddisabledreadonly 属性
  • 所有 HTML5 特定和全局属性(由 Mozilla 开发者网络文档 提供)
  • 每个字段都有一个如上所述的内置特定验证器
  • 每个内置验证器都会在必要时将表单错误添加到会话中,然后所有错误都会在错误页面中显示/渲染,并在用户提交后从会话中清除
  • 任何字段都可以以自然方式或使用特定字段类/实例的模板进行渲染
  • 非常可扩展的字段类 - 每个字段都有公共模板方法
    • SetForm() - 在字段实例被添加到表单实例后立即调用
    • PreDispatch() - 在任何字段实例渲染类型之前立即调用
    • Render() - 在表单实例渲染过程中对每个实例进行调用
      • 子方法:RenderNaturally()RenderTemplate()RenderControl()RenderLabel() ...
    • Submit() - 在表单提交时对每个实例进行调用

示例

基本示例

$form = (new \MvcCore\Ext\Form($controller))->SetId('demo');
...
$yourAge = new \MvcCore\Ext\Forms\Fields\Number();
$yourAge
	->SetName('your_age')
	->SetLabel('Your Age')
	->SetMin(0)
	->SetMax(130)
	->SetStep(1)
	->SetValidators('Integer');
$schoolAge = new \MvcCore\Ext\Forms\Fields\Range([
	'name'		=> 'school_age',
	'label'		=> 'Your school age from/to',
	'min'		=> 0,
	'max'		=> 130,
	'step'		=> 1,
	'validators'	=> ['Range'],
]);
...
$form->AddFields($yourAge, $schoolAge);