laravel-admin / media-manager
提供围绕存储的模型,为您提供了图片样式和媒体管理后台
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.8
- intervention/image: ^3.0
- laravel/framework: ^11.0
- dev-master
- v6.1.3
- v6.1.2
- v6.1.1
- v6.1.0
- v6.0.0
- v5.0.2
- v5.0.1
- v5.0.0
- v4.0.1
- v4.0.0
- v3.0.18
- v3.0.17
- v3.0.16
- 3.0.15
- 3.0.14
- 3.0.13
- 3.0.12
- 3.0.11
- 3.0.10
- 3.0.9
- 3.0.8
- v3.0.7
- 3.0.6
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.0.1
- 2.0.0
- 1.1.0
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.1
- 1.0.0
- dev-martijngastkemper-patch-1
- dev-develop
- dev-feature/show-view
- dev-feature/rights-and-roles
This package is not auto-updated.
Last update: 2024-09-25 17:51:39 UTC
README
此包有4个主要目标
- 为您的应用程序存储提供Eloquent模型
- 通过在模型上实现特性,自动创建与媒体模型的一对多关系
- 为图片创建样式并存储或缓存这些样式
- 提供Vue组件以显示和浏览媒体
注意:此包仍在开发中。在生产环境中使用它存在风险,请自行承担。合作和建议始终受欢迎
要求
此包完全基于Laravel 5.3的哲学构建。它使用5.3的方法快速上传文件,并使用与Laravel Elixir 6相同的Vue组件设置。请勿在Laravel 5.2或更低版本中使用此包。Vue组件的模板完全基于Bootstrap 3。
安装
使用Composer安装此包
composer require laravel-admin/media-manager
将ServiceProvider添加到app/config/app.php中的providers数组中
LaravelAdmin\MediaManager\MediaManagerProvider::class
如果您想编辑配置或后端视图,您需要将这些资源发布到您的应用程序
php artisan vendor:publish
此包为媒体模型生成一个迁移文件,因此需要迁移数据库以创建表。
php artisan migrate
要使用Vue组件在您的(管理)应用程序中,您需要在app.js文件中从您的供应商文件夹中要求javascript引导文件。
require('../../../vendor/laravel-admin/media-manager/resources/js/bootstrap.js');
注意:javascript需要Dropzone才能工作,使用以下语句安装它
npm install dropzone --save-dev
上传媒体
使用以下代码,您可以将文件上传到默认存储并返回创建的媒体模型。
use LaravelAdmin\MediaManager\Upload; $media = Upload::handle($request, 'file');
注意:handle方法的第一个参数是默认的Laravel请求对象。第二个参数是提交的文件名称。
您还可以将文件上传到其他存储。此存储必须是config/filesystems.php中配置的存储。
$media = Upload::storage('s3')->handle($request, 'file');
注意:Eloquent模型将存储保存在数据库中,因此您的应用程序始终知道如何找到上传的文件。
上传器使用基于驱动器的系统将文件添加到您的存储和数据库中。您可以创建自己的驱动器并将它添加到媒体配置中,在upload/drivers中。您的驱动器必须实现以下接口
LaravelAdmin\Mediamanager\Contracts\UploadDriver
默认情况下,此包提供了两个驱动器。上传文件的默认驱动器以及一个名为'url'的第二个驱动器,可以直接从URL保存文件。要更改驱动器,只需这样做
$media = Upload::with('url')->handle($request, 'http://domain.com/somefile.jpg');
您还可以替换现有模型而不是创建新模型。
$media = Upload::update($current_model)->handle($request, 'file');
创建关系
如果您想在模型和媒体模型之间创建关系,您可以简单地在表中添加字段并将MediaTrait添加到模型中。
创建迁移并添加以下内容
$table->integer('media_id')->unsigned()->nullable(); $table->foreign('media_id')->references('id')->on('media')->onDelete('set null');
注意:添加->after('fieldname')以将字段添加到您想要的位置。
现在将MediaTrait添加到您的模型中
namespace App; use Illuminate\Database\Eloquent\Model; use LaravelAdmin\MediaManager\Traits\MediaTrait; class Blog extends Model { use MediaTrait;
此特性基于约定,您在数据库中添加的字段名称为'media_id'。如果您希望使用其他名称,或者您有多个字段如标题,请手动将关系添加到模型中
public function myfieldname() { return $this->belongsTo(\LaravelAdmin\MediaManager\Models\Media::class); }
现在特性已集成,目前您的模型上有两个新方法可用
- mediaUrl
- imagestyle
mediaUrl
mediaUrl方法直接返回您模型上连接媒体的公共URL
$blog->mediaUrl();
注意:作为参数,您可以发送自定义媒体字段。
imagestyle
imagestyle接收您想要的imagestyle并直接返回样式的URL。作为第二个参数,您可以使用自定义关系代替'media'。
$blog->imagestyle('thumbnail');