finller/ filament-media-plugin
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')