nh/mediable

上传并附加媒体到模型

1.6.8 2023-05-24 10:49 UTC

This package is auto-updated.

Last update: 2024-09-24 14:01:06 UTC


README

通过composer安装包

composer require nh/mediable

发布配置和媒体模型

php artisan vendor:publish --tag=mediable

如果您需要发布数据库,可以使用

php artisan vendor:publish --tag=mediable-database

要使模型可媒体化,将Mediable特质添加到您的模型中

use Nh\Mediable\Traits\Mediable;

use Mediable;

您可以检索模型的媒体(按位置排序)

$model->media;

或者您可以检索模型的第一个媒体

$model->firstMedia;

按类型检索所有媒体

$model->mediaByType('picture');

您可以检查模型是否有某些媒体

$model->hasMedia(); // Check if there is some media
$model->hasMedia(true); // Check if there is some media, even soft deleted ones
$model->hasMedia(false,'picture'); // Check if there is some media of type "picture"

如果您需要调整图片媒体(JPEG/PNG)的大小,请将大小添加到配置mediable.php中的'sizes'

'posts' => [
  'fit'    => null,
  'height' => [100,200],
  'width'  => 400,800
]

如果您需要添加水印,可以在配置mediable.php中激活此功能,并在配置mediable.php中的'sizes'添加大小

'watermark' => [
    'enable' => true, // Enable the watermark
    'src' => 'images/watermark.png', // Must be in public folder
    'position' => [
      'name' => 'bottom-right',
      'x' => 5,
      'y' => 5
     ]
],

默认情况下,媒体上传到public磁盘,但您可以在配置mediable.php中更改此设置。

媒体保存在此

  • 以模型类名复数形式命名的文件夹(例如:App\Post => posts)
  • 以媒体格式名复数形式命名的文件夹(例如:42.jpg => images)
  • 对于图片,以调整大小值命名的文件夹(例如:42.jpg,其高度调整为100px => h-100)

视图

添加媒体

输入名称必须为:media_to_add[KEY][name]media_to_add[KEY][file],并且您可以添加可选的 media_to_add[KEY][position]

<label>Name of the media</label>
<input type="text" name="media_to_add[0][name]" />

<label>File to upload</label>
<input type="file" name="media_to_add[0][file]" />

编辑媒体

输入名称必须为:media_to_update[KEY][name],并且您可以添加可选的 media_to_update[KEY][position]

<label>Name of the media</label>
<input type="text" name="media_to_edit[0][name]" />

删除媒体

输入名称必须为:media_to_delete[],并且值必须是ID

<input type="checkbox" name="media_to_delete[]" value="1"/>

模型

属性

您可以检索媒体的文件名 返回:42.jpg

$media->filename

您可以检索媒体的基文件夹 返回:posts

$media->base_folder

您可以检索媒体的文件夹 返回:posts/images

$media->folder

您可以检索媒体的格式 格式由扩展名定义,例如,.jpg将返回'image'。

$media->format

您可以检索媒体的默认URL 返回:posts/images/42.jpg

$media->url

您可以检索媒体缩略图的URL (仅当格式为'image'时) 返回:posts/images/thumbnails/42.jpg

$media->thumbnail

函数

您可以检索媒体的URL,并且可以添加子文件夹。 例如:42.jpg,其高度调整为100px => 'posts/images/h-100/42.jpg'

$media->getUrl('h-100')

您可以检索媒体从服务器端的绝对URL,并且可以添加子文件夹。 例如:42.jpg,其高度调整为100px => '/Users/YOURUSERNAME/Web/MYPROJECT/public/storage/FOLDER/images/SUBFOLDER/42.png'

$media->getAbsoluteUrl('h-100')

您可以检索媒体文件,并且可以添加子文件夹。 例如:42.jpg,其高度调整为100px => 'posts/images/h-100/42.jpg'

$media->getFile('h-100')

事件

您可以使用MediaEvent来分发发生在媒体上的事件。 您可以传递一个名称、父模型、媒体模型(或null)以及受影响的媒体数量。

MediaEvent::dispatch('my-event', $model, $media, 1);