tahirrasheed208/laravel-medialibrary

4.0.1 2024-08-26 10:11 UTC

README

此包可以将图像与Eloquent模型关联。

Latest Version on Packagist Total Downloads

入门指南

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以获取更多信息。