mvccore / ext-form-field-file
MvcCore - 扩展 - 表单 - 字段 - 文件 - 表单字段输入:file 用于上传文件和上传文件验证。
v5.2.3
2024-04-18 22:49 UTC
Requires
- php: >=5.4.0
- mvccore/ext-form: ^5.2.20
- mvccore/mvccore: ^5.2.33
Suggests
- mvccore/ext-tool-mimetype-extension: MvcCore file extensions and mimetypes validator helper.
README
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 文件炸弹
特性
- 始终在服务器端检查
required
、disabled
和readonly
属性 - 所有 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 文件炸弹检测