Spatie\MediaLibrary

Вы просматриваете документацию старой версии MoonShine. Рассмотрите возможность обновления вашего проекта до MoonShine 2.x.

Наследует Image * имеет те же возможности

Поле вынесено в отдельный пакет, перед использованием необходимо выполнить установку

composer require visual-ideas/moonshine-spatie-medialibrary

Поле предназначено для работы с пакетом Laravel-medialibrary от Spatie

Прежде чем использовать поле Spatie\MediaLibrary, необходимо убедиться что:

  • Пакет spatie/laravel-medialibrary установлен и настроен
  • Пакет visual-ideas/moonshine-spatie-medialibrary установлен
  • Поле, передаваемое в Spatie\MediaLibrary, добавлено как название коллекции через ->addMediaCollection('Поле')

В модели:

use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
 
class ModelClass extends Model implements HasMedia
//...
use InteractsWithMedia;
 
//...
public function registerMediaCollections(): void
{
$this->addMediaCollection('cover');
}
//...

В MoonShine-ресурсе:

use VI\MoonShineSpatieMediaLibrary\Fields\MediaLibrary;
//...
MediaLibrary::make('Обложка', 'cover'),
//...

По умолчанию, поле работает в режиме одного изображения

use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
 
class ModelClass extends Model implements HasMedia
//...
use InteractsWithMedia;
//...
public function registerMediaCollections(): void
{
$this->addMediaCollection('cover')->singleFile();
}
//...

Если вы хотите использовать поле для загрузки нескольких изображений, добавьте к объявлению поля метод ->multiple()

//...
MediaLibrary::make('Галерея', 'gallery')->multiple(),
//...