优雅 / filament-media-plugin
Filament 对 `elegantly/laravel-media` 的支持。
Requires
- php: ^8.1
- elegantly/laravel-media: ^2.1.1
- illuminate/support: ^10.|^11.0
Requires (Dev)
- larastan/larastan: ^2.0.1
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9|^8.1
- orchestra/testbench: ^8.8|^9.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
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')