symfonycontrib / filefield-bundle
Symfony2 高级文件字段Bundle
此包的官方仓库似乎已消失,因此该包已被冻结。
v1.0.3
2016-01-21 23:05 UTC
Requires
- php: >=5.4
- symfony/symfony: ~2.3
This package is not auto-updated.
Last update: 2024-07-06 13:11:59 UTC
README
此代码是 SymfonyContrib 社区的一部分。
Symfony2 文件字段Bundle
提供高级文件上传表单字段。
###扩展
###功能
- 高度可扩展和可定制。
- 单文件和多文件上传。
- 使用自定义表单收集有关文件的数据。
- 在上传前后触发事件。
- 允许集成外部资产管理系统,如S3、CDNs等。
- 提供文件图标。
- Ajax上传。
- 进度条。
- 使用jQuery File Upload
- ...更多。
安装
安装类似于标准Bundle。 https://symfony.com.cn/doc/current/cookbook/bundles/installation.html
- 将Bundle添加到composer.json: https://packagist.org.cn/packages/symfonycontrib/filefield-bundle
- 将Bundle添加到AppKernel.php
new SymfonyContrib\Bundle\FileFieldBundle\FileFieldBundle(),
包含路由文件
# app/config/routing.yml filefield: resource: "@FileFieldBundle/Resources/config/routing.yml"
- jQuery是必需的,但此Bundle不提供。
- 包含JS文件(顺序很重要)
- 'bundles/filefield/js/vendor/jquery.ui.widget.js' (只有当jQuery UI未安装时才需要)
- 'bundles/filefield/js/jquery.iframe-transport.js'
- 'bundles/filefield/js/jquery.fileupload.js'
- 'bundles/filefield/js/jquery.fileupload-process.js'
- 'bundles/filefield/js/jquery.fileupload-validate.js'
- 'bundles/filefield/js/jquery.filefield-ui.js'
- 'bundles/filefield/js/filefield.js'
- 包含CSS文件
- 'bundles/filefield/css/jquery.fileupload-ui.css'
配置
默认情况下,Bundle加载一个表单模板以美化默认字段。如果您想自定义filefield主题,可以通过设置禁用默认模板的加载:
# app/config/parameters.yml filefield.load_form_template: false
用法示例
简单单文件上传,后端由数组支持
// Only URI is required. $data = [ 'name' => 'examplefile.txt', 'mime_type' => 'text/plain', 'size' => 50, 'uri' => '/uploads/examplefile.txt', ]; ... // These are the only two required options but there are many more. $builder->add('file', 'filefield', [ 'upload_dir' => '/absolute/system/path/to/upload/dir/web/uploads', 'uri' => '/uploads/', ]);
简单多文件上传,后端由文件对象数组支持。
$data = [ new File('/path/to/file'), new File('/path/to/file'), ]; ... $builder->add('files', 'filefield', [ 'upload_dir' => '/absolute/system/path/to/upload/dir/web/uploads', 'uri' => '/uploads/', 'multiple' => true, 'limit' => 2, 'allow_add' => true, 'allow_delete' => true, ]);
架构
在核心上,FileFieldBundle仅负责将文件从浏览器上传到服务器。这意味着表单中文件的显示部分大部分被转移到其他用作子表单的表单,类似于核心集合表单字段。
但是,FileFieldBundle确实提供了一个简单的显示表单类型,如果未提供其他表单类型,则默认使用。此表单类型仅显示文件名(链接到文件)、表示MIME类型的文件图标以及文件大小。
字段选项
- multiple: (布尔值) (默认: false) 是否允许上传多个文件。
- limit: (整数) (默认: 1) 当multiple设置为true时允许上传的文件数量。
- upload_dir: (字符串) (默认: '') 上传文件的系统路径。
- uri: (字符串) (默认: '') 浏览器将使用该URI来访问文件。
- js_options: (数组) (默认: []) 传递给jQuery File Upload的选项数组。
- preview_type: (字符串) (默认: null) 要使用的预览模板名称。
- type: (字符串) (默认: 'filefield_simple') 要用于显示的表单类型名称。
- options: (数组) (默认: []) 传递给子表单类型的选项数组。
- include_filefield_options: (布尔值) (默认: true) 是否在子表单选项中包含所有父filefield选项。
- allow_add: (布尔值) (默认: false) 当 multiple 设置为 true 时,是否允许添加文件。
- allow_delete: (布尔值) (默认: false) 当 multiple 设置为 true 时,是否允许删除文件。
- string_transformer: (布尔值) (默认: true) 是否使用字符串到数组的转换器以处理单个字段。