nh / mediable
上传并附加媒体到模型
Requires
- intervention/image: ^2.5
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);