digital-creative / nova-filepond
Nova 字段,用于使用 filepond 上传文件、图片和视频。
v1.0.6
2024-01-31 04:51 UTC
Requires
- php: >=8.1
- laravel/nova: ^4.0
README
Nova 字段,用于使用 Filepond 上传文件、图片和视频。
安装
您可以通过 composer 安装此包。
composer require digital-creative/nova-filepond
特性
- 单/多文件上传
- 可排序的文件
- 预览图片、视频和音频
- 启用/禁用预览
- 扩展原始 Laravel Nova 文件字段,为您提供默认文件上传的所有方法/功能。
- 拖放文件
- 直接从剪贴板粘贴文件
- 存储自定义属性(原始文件名、大小等)
- 可删除文件(当模型被删除时自动删除文件)
- 支持暗黑模式
用法
该字段扩展了原始 Laravel Nova 文件字段,因此您可以使用原始字段中所有可用的方法。
基本用法
use DigitalCreative\Filepond\Filepond; class Post extends Resource { public function fields(NovaRequest $request): array { return [ Filepond::make('Images', 'images') ->rules('required') ->prunable() ->disablePreview() ->multiple() ->limit(4), ]; } }
当上传多个文件时,您需要在模型类中将属性转换为数组。
class Post extends Model { protected $casts = [ 'images' => 'array' ]; }
您还可以使用 storeOriginalName
和 storeOriginalSize
方法存储原始文件名/大小。
use DigitalCreative\Filepond\Filepond; class Post extends Resource { public function fields(NovaRequest $request): array { return [ Filepond::make('Images', 'images') ->storeOriginalName('name') ->storeSize('size') ->multiple(), // or you can manually decide how to store the data // Note: the store method will be called for each file uploaded and the output will be stored into a single json column Filepond::make('Images', 'images') ->multiple() ->store(function (NovaRequest $request, Model $model, string $attribute): array { return [ $attribute => $request->images->store('/', 's3'), 'name' => $request->images->getClientOriginalName(), 'size' => $request->images->getSize(), 'metadata' => '...' ]; }) ]; } }
注意:当使用
storeOriginalName
和storeSize
方法时,如果您处于“单文件”模式,您需要将列添加到您的数据库表中。
⭐️ 展示您的支持
如果此项目对您有帮助,请给予 ⭐️!
您可能还喜欢的其他包
- Nova Dashboard - 缺失的 Laravel Nova 仪表板!
- Nova Welcome Card - Nova 内置的
帮助卡
的可配置版本。 - Icon Action Toolbar - 用基于图标的操作行替换默认的乏味操作菜单。
- Expandable Table Row - 为您的资源表中的每一行提供附加额外数据的一种简单方法。
- Collapsible Resource Manager - 为侧边栏上的资源提供排序和分组的一种简单方法。
- Resource Navigation Tab - 将您的资源字段组织到标签页中。
- Resource Navigation Link - 创建指向内部或外部资源的链接。
- Nova Mega Filter - 在卡片中显示所有过滤器,而不是在微小的下拉菜单中显示!
- Nova Pill Filter - 一个渲染为可点击药丸的 Laravel Nova 过滤器。
- Nova Slider Filter - 一个 Laravel Nova 过滤器,用于在最小/最大值之间选择范围。
- Nova Range Input Filter - 一个 Laravel Nova 范围输入过滤器。
- Nova FilePond - 使用 Filepond 上传文件、图片和视频的 Nova 字段。
- 自定义关系字段 - 在资源之间没有实际关系集合的情况下模拟HasMany关系。
- 列切换器 - 一款Laravel Nova扩展包,允许您在索引视图中隐藏/显示列。
- 批量编辑工具栏 - 允许您直接从索引页一次性更新资源的单个列。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。