webpress media-manager

此包的最新版本(3.1.87)没有可用的许可证信息。


README

用户组件包提供了管理应用程序用户的便捷方式。

安装

Composer

要将此包包含到您的项目中,请运行以下命令。

composer require vicoders/media-manager

配置和迁移

运行以下命令以发布配置和迁移文件。

php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"
php artisan vendor:publish --provider "Prettus\Repository\Providers\RepositoryServiceProvider"
php artisan vendor:publish --provider "Spatie\MediaLibrary\MediaLibraryServiceProvider"
php artisan vendor:publish --provider "VCComponent\Laravel\MediaManager\MediaManagerProvider"

创建表。

php artisan migrate

config/medialibrary.php 中进行更改。

'media_model' => VCComponent\Laravel\MediaManager\Entities\Media::class,

环境

.env 文件中,我们需要进行一些配置。

API_PREFIX=api
API_VERSION=v1
API_NAME="Your API Name"
API_DEBUG=false

请记住更新您的 APP_URL

APP_URL=http://somedomain.com

.env 文件中生成 JWT_SECRET

php artisan jwt:secret

配置

config/filesystems 中,在 'disk' 中添加 'media' 以在添加图片时创建链接和存储文件夹。

'disks' => [
 ...
 'media' => [
           'url' => env('APP_URL') . '/uploads/media',
           'driver' => 'local',
           'root' => public_path('uploads/media'),
         ],
 ],

.env 中添加 MEDIA_DISK="media" 以使用 'disks' 中的 'media' 配置。

现在包已准备好使用。

配置

URL命名空间

为了避免与应用程序的api端点重复,包有其路由的默认命名空间,为 media-manager。例如

{{url}}/api/media-manager/collections

您可以通过修改 .env 文件中的 MEDIA_MANAGER_NAMESPACE 变量来将包的url命名空间更改为您想要的任何内容。

MEDIA_MANAGER_NAMESPACE="your-namespace"

准备你的模型

要将媒体与模型关联,该模型必须实现以下接口和特性

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Spatie\MediaLibrary\HasMedia\HasMedia;
use VCComponent\Laravel\MediaManager\HasMediaTrait;

class Post extends Model implements HasMedia
{
    use HasMediaTrait;
    ...
}

如果您想使模型具有可配置尺寸的媒体,您应该在其模型中包含 registerMediaConversions 方法。

  public function registerMediaConversions(Media $media = null)
  {
    $media_dimension = MediaDimension::where('model', 'product')->get();
    foreach ($media_dimension as $item) {
      $this->addMediaConversion($item->name)->width($item->width)->height($item->height)->sharpen(10);
    }
  }

关联媒体

您可以像这样将文件与模型关联

$media_id = 2;
$post = Post::create($data);
$post->attachMedia($media_ids);

或者您可以传递媒体ID数组

$media_ids = [1, 2, 3];
$post = Post::create($data);
$post->attachMedia($media_ids);

检索媒体

您可以使用以下几种方法检索媒体

使用Eloquent模型关系

$mediaItems = $newsItem->media;

使用 getMedia 方法

$mediaItems = $newsItem->getMedia();

您可以检索特定集合的媒体

$collection_name = 'image';
$mediaItems = $newsItem->getMedia($collection_name);

S3磁盘配置

默认情况下,所有文件都存储在配置文件中指定的 disk_name 指定的磁盘上。

如果您想使用 s3 存储文件,您可以自由更改 disk_name 配置,只需添加以下环境变量即可

MEDIA_DISK=s3

请确保您在 config/medialibrary.php 文件中配置了正确的s3 URL。

's3' => [
    'domain' => 'https://'.env('AWS_BUCKET').'.s3-'.env('AWS_DEFAULT_REGION').'.amazonaws.com',
],

API列表

以下是该包提供的API列表。

动词 URI 动作
GET /api/{namespace}/collections 获取具有分页的集合列表
GET /api/{namespace}/collections/all 获取所有集合
GET /api/{namespace}/collections/{id} 获取集合项
POST /api/{namespace}/collections 创建集合
PUT /api/{namespace}/collections/{id} 更新集合
DELETE /api/{namespace}/collections/{id} 删除集合
------ ------ ------
GET /api/{namespace}/media 获取具有分页的集合列表
GET /api/{namespace}/media/all 获取所有媒体
GET /api/{namespace}/media/{id} 获取集合项
POST /api/{namespace}/media 创建集合
PUT /api/{namespace}/media/{id} 更新集合
DELETE /api/{namespace}/media/{id} 删除集合
PUT /api/{namespace}/media/{id}/collection/attach 将媒体附加到集合
PUT /api/{namespace}/media/{id}/collection/detach 从集合中移除媒体