hcakir / laravel-11-media-manager

Laravel 11 专用媒体管理包

1.0.0 2024-04-17 10:28 UTC

This package is auto-updated.

Last update: 2024-09-17 11:43:32 UTC


README

此包可用于Laravel应用程序中的媒体管理。

概览

此包专为在Laravel项目中管理媒体文件(图片和视频)而设计。功能可以通过向相关模型添加 `MediaTrait` 类来集成。

`MediaTrait` 类在模型与媒体文件之间建立关系,同时通过 `MediaHelper` 帮助实现媒体操作。这些操作包括将媒体文件与模型关联、添加、删除和同步。

当媒体文件更新或相关模型被删除时,数据库中的关系将自动删除。此外,媒体文件将从磁盘上删除,相关数据将被清理。这些特性使媒体管理变得简单高效。

安装

  1. 将包添加到Laravel项目中
composer require hcakir/laravel-11-media-manager
  1. Laravel 5.5及以后的版本会自动识别包的Service Provider。如果您使用的是Laravel 5.5之前的版本,则需要将以下行添加到config/app.php文件中的providers数组中
Hcakir\Laravel11MediaManager\Providers\MediaManagerServiceProvider::class,
  1. 发布包的配置文件和迁移文件到项目中
php artisan vendor:publish --provider="Hcakir\\Laravel11MediaManager\\Providers\\MediaManagerServiceProvider"
  • 此命令将包的配置文件复制到config/目录,将迁移文件复制到database/migrations/目录。
  1. 执行发布的迁移文件
php artisan migrate
  • 此命令将为媒体管理系统创建必要的数据库表。
  1. 创建存储符号链接
php artisan storage:link
  1. 向相关模型添加MediaTrait
use Hcakir\Laravel11MediaManager\Traits\MediaTrait;

class YourModel extends Model
{
    use MediaTrait;
}

现在您可以在项目中开始使用Laravel 11 Media Manager包了!

依赖

此包有以下要求

  • PHP 8.0或更高版本
  • Laravel 10.0或11.0
  • PHPUnit 9.0, 10.0或11.0
  • 这些要求是包正常运行所必需的。请在使用包之前确保满足这些要求。

使用

  1. 添加媒体文件和建立关系
if ($request->hasFile('media')) {
    $productCategory->attachMedia($request->file('media'));
}
  1. 更新媒体文件
if ($request->hasFile('media')) {
    $productCategory->syncMedia($request->file('media'));
}
  1. 删除媒体文件和解除关系
$productCategory->detachMedia();
$productCategory->delete();
  1. 使用controller json添加媒体和建立关系
public function deleteMedia(Request $request, $categoryId, $mediaId)
{
    $productCategory = ProductCategory::findOrFail($categoryId);
    $media = $productCategory->media()->findOrFail($mediaId);
    $mediaPaths = [$media->path];
    MediaHelper::deleteMedia($mediaPaths);
    return response()->json(['success' => true]);
}
  1. 显示相关媒体文件
public function edit(string $id)
{
$productCategory = ProductCategory::findOrFail($id);
$media = $productCategory->media()->get();
return view('backend.pages.product_category.edit', compact('productCategory', 'media'));
}

其他使用方式

`MediaHelper` 类提供静态方法来保存和删除媒体文件。

示例用法

use Hcakir\Laravel11MediaManager\Helpers\MediaHelper;

$mediaFiles = request()->file('media');
$mediaIds = MediaHelper::storeMedia($mediaFiles);

测试

  • 包包含一系列测试以验证其功能。测试可以在 `MediaTraitTest` 类中找到。
  • 要运行测试,请在终端中输入 `php artisan test` artisan命令

许可证

  • 此包在MIT许可证下发布。有关更多信息,请参阅 `LICENSE` 文件。

贡献

  • 我们期待您的贡献!如果您发现错误或想要提出功能建议,请创建一个问题或发送一个拉取请求。