tahirrasheed208 / laravel-medialibrary
Laravel的媒体库
4.0.1
2024-08-26 10:11 UTC
Requires
- php: ^8.2
- ext-exif: *
- ext-fileinfo: *
- ext-json: *
- illuminate/database: ^11.0
- illuminate/support: ^11.0
- illuminate/view: ^11.0
- intervention/image-laravel: ^1.3
Requires (Dev)
- ext-imagick: *
- orchestra/testbench: ^9.0
- phpunit/phpunit: ^11.0
README
此包可以将图像与Eloquent模型关联。
入门指南
1. 安装
运行以下命令
composer require tahirrasheed208/laravel-medialibrary
2. 发布
发布配置文件。
php artisan vendor:publish --provider="TahirRasheed\MediaLibrary\MediaLibraryServiceProvider" --tag=medialibrary-config
3. 准备数据库
您需要发布迁移来创建媒体表
php artisan vendor:publish --provider="TahirRasheed\MediaLibrary\MediaLibraryServiceProvider" --tag=medialibrary-migration
之后,您需要运行迁移。
php artisan migrate
用法
您的Eloquent模型应使用 TahirRasheed\MediaLibrary\Traits\HasMedia
特性。
使用blade组件在您的表单中添加文件上传器。
<x-medialibrary-file-upload name="image" />
在编辑页面上显示旧图像。
<x-medialibrary-file-upload name="image" :model="$model" />
上传
$model = Model::find(1); $model->handleMediaFromRequest()->toMediaCollection();
如果您的文件输入名称不是 image
,则定义第二个参数。
$model->handleMediaFromRequest('banner')->toMediaCollection();
上传到特定集合。
$model->handleMediaFromRequest()->toMediaCollection('images');
您可以在Eloquent级别定义默认集合。在您的模型中添加以下函数。
public function defaultCollection(): string { return 'post_images'; }
上传到特定磁盘。
$model->handleMediaFromRequest()->useDisk('s3')->toMediaCollection();
注册媒体转换
public function registerMediaConversions() { $this->addMediaConversion('post_main') ->width(420) ->height(350); }
您可以注册尽可能多的媒体转换
public function registerMediaConversions() { $this->addMediaConversion('post_main') ->width(420) ->height(350); $this->addMediaConversion('post_detail') ->width(700) ->height(550); }
默认强制裁剪是禁用的,但您可以启用它
$this->addMediaConversion('post_main') ->width(420) ->height(350) ->crop();
禁用转换
如果您想在某些文件上禁用已注册的转换
$model->handleMediaFromRequest()->withoutConversions()->toMediaCollection();
配置
在配置文件中定义您的布局堆栈。
'stack' => 'footer',
或者您可以使用我们的blade指令。
@mediaLibraryScript
具有Dropzone的画廊
<x-medialibrary-dropzone name="gallery" />
使用以下代码将画廊附加到模型。
$model->attachGalleryToModelFromRequest('gallery')->toMediaCollection();
您也可以为画廊定义集合。
<x-medialibrary-dropzone name="gallery" collection="dropzone" />
您也可以将模型定义到dropzone组件。当您将模型定义到组件时,所有图像都会自动附加到模型。
<x-medialibrary-dropzone name="gallery" :model="$model" />
您还可以更改默认的dropzone消息。
<x-medialibrary-dropzone name="gallery" message="Drop files here" />
从URL添加媒体
$model->addMediaFromUrl($url, 'image')->toMediaCollection();
通过Laravel设置实现
安装设置包
composer require tahirrasheed208/laravel-settings
Blade组件以显示旧文件
<x-medialibrary-file-upload name="image" setting="{{ setting()->get('name') }}" />
上传文件
setting()->upload($request->toArray(), 'file_name');
默认情况下,我们期望文件名是您的选项名称,但您也可以定义自己的选项名称。
setting()->upload($request->toArray(), 'file_name', 'option_name');
获取上传文件URL
setting()->getFile('name');
更新日志
请参阅发布以获取更多有关最近更改的信息。
贡献
欢迎提交拉取请求。您必须遵循PSR编码标准。
安全
如果您发现任何安全问题,请通过tahirrasheedhtr@gmail.com 发送电子邮件,而不是使用问题跟踪器。
许可
MIT许可证(MIT)。请参阅LICENSE以获取更多信息。