优雅/filament-media-plugin

Filament 对 `elegantly/laravel-media` 的支持。

v3.2.85 2024-05-27 14:08 UTC

This package is auto-updated.

Last update: 2024-09-27 14:50:55 UTC


README

安装

使用 Composer 安装插件

composer require elegantly/laravel-media-plugin:"^3.1" -W

如果您还没有这样做,您需要发布迁移来创建媒体表

php artisan vendor:publish --tag="laravel-media-migrations"

运行迁移

php artisan migrate

您还必须准备您的 Eloquent 模型 以附加媒体。

有关更多信息,请参阅Elegantly 的文档

表单组件

您可以使用该字段与原始文件上传字段相同的方式

use Filament\Forms\Components\ElegantlyMediaFileUpload;

ElegantlyMediaFileUpload::make('avatar')

媒体库文件上传支持原始文件上传组件的所有自定义选项

该字段将自动将上传加载到您的模型并保存。要设置此功能,您还必须遵循设置表单模型部分中的说明。如果您使用的是面板,则可以跳过此步骤。

传递集合

可选地,您可以通过collection()传递一个集合,以便将文件分组到类别中

use Filament\Forms\Components\ElegantlyMediaFileUpload;

ElegantlyMediaFileUpload::make('avatar')
    ->collection('avatars')

配置存储磁盘和目录

默认情况下,文件将公开上传到在Filament 配置文件中定义的存储磁盘。您也可以设置FILAMENT_FILESYSTEM_DISK环境变量来更改此设置。这是为了确保所有 Filament 包之间的一致性。除非您为已注册的集合定义磁盘,否则 Elegantly 的磁盘配置将不会被使用。

或者,您可以使用disk()方法手动设置磁盘

use Filament\Forms\Components\FileUpload;

FileUpload::make('attachment')
    ->disk('s3')

基础文件上传组件还具有设置上传文件的directory()visibility()的配置选项。这些选项不适用于媒体库文件上传组件。Elegantly 的包有自己的系统来确定新上传文件的目录,并且它不支持默认上传私有文件。存储私有文件的一种方法是在您的 S3 桶设置中配置此选项,在这种情况下,您还应该使用visibility('private')以确保 Filament 为您的文件生成临时 URL。

重新排序文件

除了正常文件上传的行为外,Elegantly 的媒体库还允许用户重新排序文件。

要启用此行为,使用reorderable()方法

use Filament\Forms\Components\ElegantlyMediaFileUpload;

ElegantlyMediaFileUpload::make('attachments')
    ->multiple()
    ->reorderable()

现在您可以拖放文件以排序。

添加自定义属性

您可以在使用customProperties()方法上传文件时传递自定义属性

use Filament\Forms\Components\ElegantlyMediaFileUpload;

ElegantlyMediaFileUpload::make('attachments')
    ->multiple()
    ->customProperties(['zip_filename_prefix' => 'folder/subfolder/'])

使用转换

您还可以指定一个conversion(),如果存在,则在表单中显示文件时加载该文件

use Filament\Forms\Components\ElegantlyMediaFileUpload;

ElegantlyMediaFileUpload::make('attachments')
    ->conversion('thumb')

在单独的磁盘上存储转换

您可以将转换和响应式图片存储在保存原始文件的磁盘之外。将想要保存转换的磁盘名称传递给 conversionsDisk() 方法。

use Filament\Forms\Components\ElegantlyMediaFileUpload;

ElegantlyMediaFileUpload::make('attachments')
    ->conversionsDisk('s3')

表格列

要使用媒体库图片列

use Filament\Tables\Columns\ElegantlyMediaImageColumn;

ElegantlyMediaImageColumn::make('avatar')

媒体库图片列支持原始图片列的所有自定义选项,请参阅 原始图片列文档

传递集合

可选地,您也可以传递一个 collection()

use Filament\Tables\Columns\ElegantlyMediaImageColumn;

ElegantlyMediaImageColumn::make('avatar')
    ->collection('avatars')

使用转换

您还可以指定一个 conversion() 来加载文件,如果存在,则在表格中显示它

use Filament\Tables\Columns\ElegantlyMediaImageColumn;

ElegantlyMediaImageColumn::make('avatar')
    ->conversion('thumb')

信息列表条目

要使用媒体库图片条目

use Filament\Infolists\Components\ElegantlyMediaImageEntry;

ElegantlyMediaImageEntry::make('avatar')

媒体库图片条目支持原始图片条目的所有自定义选项,请参阅 原始图片条目文档

传递集合

可选地,您也可以传递一个 collection()

use Filament\Infolists\Components\ElegantlyMediaImageEntry;

ElegantlyMediaImageEntry::make('avatar')
    ->collection('avatars')

使用转换

您也可以指定一个 conversion() 来加载文件,如果存在,则在信息列表中显示它

use Filament\Infolists\Components\ElegantlyMediaImageEntry;

ElegantlyMediaImageEntry::make('avatar')
    ->conversion('thumb')