mvccore/ext-form-field-file

MvcCore - 扩展 - 表单 - 字段 - 文件 - 表单字段输入:file 用于上传文件和上传文件验证。

v5.2.3 2024-04-18 22:49 UTC

This package is auto-updated.

Last update: 2024-09-18 23:58:44 UTC


README

Latest Stable Version License PHP Version

MvcCore 表单扩展,带有 input 类型 file 和文件上传验证。

此上传没有包含向后兼容的 JavaScript 或 Flash。它严格使用 HTML5,不显示任何额外信息。您可以将此字段扩展以实现此功能。

安装

composer require mvccore/ext-form-field-file

字段和默认验证器

  • input:file
    • 文件
      • 默认配置
      • 通过检查验证提交的单个文件或多个文件
        • 内置 PHP 上传错误(最大 POST 大小等...)
        • 如果文件不是任何系统文件,并且确实是上传的文件(is_uploaded_file()is_file()filesize()
        • 文件名中允许的字符,此验证器会自动清洗每次上传的文件名
        • accept 属性通过上传文件(s)的魔术字节允许的 MIME 类型(或通过 accept 属性中的扩展,在服务器端转换为 MIME 类型以检查魔术字节)
        • ZIP/TAR.GZ/PNG 文件炸弹

特性

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

基本示例

$form = (new \MvcCore\Ext\Form($controller))->SetId('demo');
...
$photos = new \MvcCore\Ext\Forms\Fields\Time([
	'name'		=> 'photos',
	'label'		=> 'Add your photos:',
	'accept'	=> 'image/*',
	'maxCount'	=> 5, // max. uploaded photos
	'maxSize'	=> 2097152, // max. 2 MB in binary for one item
]);
...
$form->AddFields($photos);

待办事项

  • 实现 RAR 文件炸弹和 bz2 文件炸弹检测