hcakir / laravel-11-media-manager
Laravel 11 专用媒体管理包
1.0.0
2024-04-17 10:28 UTC
Requires
- php: ^8.0
- laravel/framework: ^10.0|^11.0
Requires (Dev)
- phpunit/phpunit: ^9.0|^10.0|^11.0
Suggests
- laravel/framework: Bu paket, Laravel framework ile daha iyi çalışır.
Provides
- psr/log-implementation: 1.0.0
Conflicts
- laravel/framework: <5.5
Replaces
- hcakir/laravel-10-media-manager: 1.0.0
README
此包可用于Laravel应用程序中的媒体管理。
概览
此包专为在Laravel项目中管理媒体文件(图片和视频)而设计。功能可以通过向相关模型添加 `MediaTrait` 类来集成。
`MediaTrait` 类在模型与媒体文件之间建立关系,同时通过 `MediaHelper` 帮助实现媒体操作。这些操作包括将媒体文件与模型关联、添加、删除和同步。
当媒体文件更新或相关模型被删除时,数据库中的关系将自动删除。此外,媒体文件将从磁盘上删除,相关数据将被清理。这些特性使媒体管理变得简单高效。
安装
- 将包添加到Laravel项目中
composer require hcakir/laravel-11-media-manager
- Laravel 5.5及以后的版本会自动识别包的Service Provider。如果您使用的是Laravel 5.5之前的版本,则需要将以下行添加到config/app.php文件中的providers数组中
Hcakir\Laravel11MediaManager\Providers\MediaManagerServiceProvider::class,
- 发布包的配置文件和迁移文件到项目中
php artisan vendor:publish --provider="Hcakir\\Laravel11MediaManager\\Providers\\MediaManagerServiceProvider"
- 此命令将包的配置文件复制到config/目录,将迁移文件复制到database/migrations/目录。
- 执行发布的迁移文件
php artisan migrate
- 此命令将为媒体管理系统创建必要的数据库表。
- 创建存储符号链接
php artisan storage:link
- 向相关模型添加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
- 这些要求是包正常运行所必需的。请在使用包之前确保满足这些要求。
使用
- 添加媒体文件和建立关系
if ($request->hasFile('media')) { $productCategory->attachMedia($request->file('media')); }
- 更新媒体文件
if ($request->hasFile('media')) { $productCategory->syncMedia($request->file('media')); }
- 删除媒体文件和解除关系
$productCategory->detachMedia(); $productCategory->delete();
- 使用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]); }
- 显示相关媒体文件
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` 文件。
贡献
- 我们期待您的贡献!如果您发现错误或想要提出功能建议,请创建一个问题或发送一个拉取请求。