PHPackages                             yurizoom/moonshine-media-manager - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Image &amp; Media](/categories/media)
4. /
5. yurizoom/moonshine-media-manager

ActiveLibrary[Image &amp; Media](/categories/media)

yurizoom/moonshine-media-manager
================================

Media manager for MoonShine

4.6.0(1mo ago)162.5k↑205.8%21MITPHPPHP ^8.2

Since Jun 9Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/yurizoom/moonshine-media-manager)[ Packagist](https://packagist.org/packages/yurizoom/moonshine-media-manager)[ RSS](/packages/yurizoom-moonshine-media-manager/feed)WikiDiscussions main Synced 2w ago

READMEChangelog (10)Dependencies (4)Versions (26)Used By (1)

MoonShine Media Manager
=======================

[](#moonshine-media-manager)

Файловый менеджер для [MoonShine](https://moonshine-laravel.com/).

### Поддержка версий

[](#поддержка-версий)

MoonShineПакетДокументация4.0+4.x[Ниже ↓](#%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-v4-moonshine-4)4.0+3.x[Ниже ↓](#%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-v3-moonshine-4)3.0+2.x2.0+1.xСкриншоты
---------

[](#скриншоты)

  **Менеджер** **Пикер**   [![Media Manager](blob/manager.jpg)](blob/manager.jpg) [![Media Manager Picker](blob/picker.jpg)](blob/picker.jpg) Установка
---------

[](#установка)

```
composer require yurizoom/moonshine-media-manager
```

---

Настройка v4 (MoonShine 4+)
---------------------------

[](#настройка-v4-moonshine-4)

Полностью AJAX — загрузка, удаление, переименование, навигация по папкам без перезагрузки страницы.

После установки опубликуйте ассеты и конфиг:

```
php artisan vendor:publish --tag=moonshine-media-manager-assets
php artisan vendor:publish --tag=moonshine-media-manager-config
```

### Конфигурация

[](#конфигурация)

Конфиг публикуется в `config/media-manager.php` (корневой файл). Поддерживается fallback — если ключи найдены в `config/moonshine.php` → `media_manager`, они тоже применяются. Приоритет: standalone файл &gt; `moonshine.php` &gt; дефолты пакета.

```
// config/media-manager.php
return [
    'disk' => config('filesystems.default', 'public'),
    'allowed_ext' => 'jpg,jpeg,png,gif,webp,avif,svg,bmp,ico,heic,pdf,doc,docx,xls,xlsx,ppt,pptx,zip,rar,7z,tar,gz,txt,md,csv,json,yaml,yml,mp3,wav,ogg,m4a,aac,flac,mp4,avi,mov,mkv,webm',
    'max_file_size' => env('MOONSHINE_MEDIA_MANAGER_MAX_FILE_SIZE', 10 * 1024 * 1024),
    'rename_duplicates' => env('MOONSHINE_MEDIA_MANAGER_RENAME_DUPLICATES', true),
    'auto_menu' => env('MOONSHINE_MEDIA_MANAGER_AUTO_MENU', true),
    'ability' => env('MOONSHINE_MEDIA_MANAGER_ABILITY'),
    'default_view' => 'table',
];
```

### Подключение OffCanvas

[](#подключение-offcanvas)

В `app/MoonShine/Layouts/MoonShineLayout.php`:

```
use YuriZoom\MoonShineMediaManager\Components\MediaManagerOffCanvas;

final class MoonShineLayout extends AppLayout
{
    protected function getContentComponents(): array
    {
        return [
            ...parent::getContentComponents(),
            MediaManagerOffCanvas::make(),
        ];
    }
}
```

`MediaManagerOffCanvas` — глобальный компонент, рендерит offcanvas-панель с файловым менеджером. Именно через неё работают все picker-поля на страницах. Assets загружаются автоматически через компонент.

### Добавление в меню (опционально)

[](#добавление-в-меню-опционально)

Если `auto_menu` включён (по умолчанию), пункт появится автоматически. Для ручного размещения:

```
use YuriZoom\MoonShineMediaManager\Pages\MediaManagerPage;

protected function menu(): array
{
    return [
        MenuItem::make(MediaManagerPage::class),
    ];
}
```

### Поле MediaManagerPicker

[](#поле-mediamanagerpicker)

Поле для выбора файлов из менеджера прямо в форме. Работает с обычными полями, Json и Layouts.

**Базовое использование:**

```
use YuriZoom\MoonShineMediaManager\Fields\MediaManagerPicker;

// Одно изображение
MediaManagerPicker::make('Изображение', 'image')
    ->allowedTypes(['image']),

// Множественный выбор с перетаскиванием
MediaManagerPicker::make('Галерея', 'images')
    ->multiple()
    ->allowedTypes(['image']),
```

**Фильтрация файлов** — по типу или по расширению, можно комбинировать:

```
// По типу (из менеджера): image, video, audio, pdf, word, code, zip, txt, ppt
->allowedTypes(['image'])
->allowedTypes(['image', 'pdf'])

// По расширению (точный контроль):
->allowedExtensions(['jpg', 'png', 'webp'])
->allowedExtensions(['pdf', 'doc', 'docx', 'xls', 'xlsx'])
```

**С Json:**

```
use MoonShine\UI\Fields\Json;

Json::make('Мета', 'meta')
    ->fields([
        Text::make('Заголовок', 'title'),
        MediaManagerPicker::make('Изображение', 'image')
            ->allowedTypes(['image']),
        MediaManagerPicker::make('Документ', 'document')
            ->allowedExtensions(['pdf', 'doc', 'docx']),
        MediaManagerPicker::make('Файлы', 'files')
            ->multiple()
            ->allowedExtensions(['pdf', 'doc', 'docx', 'xls', 'xlsx']),
    ]),
```

**С Layouts:**

```
use MoonShine\Layouts\Fields\Layouts;

Layouts::make('Контент', 'content')
    ->addLayout('Блок с изображением', 'image_block', [
        Text::make('Заголовок', 'title'),
        MediaManagerPicker::make('Изображение', 'image')
            ->allowedTypes(['image']),
    ])
    ->addLayout('Файловый блок', 'files_block', [
        Text::make('Заголовок', 'title'),
        MediaManagerPicker::make('Документы', 'documents')
            ->multiple()
            ->allowedExtensions(['pdf', 'doc', 'docx', 'xls', 'xlsx']),
    ]),
```

### Возможности v4

[](#возможности-v4)

- **AJAX навигация** — переход по папкам без перезагрузки
- **Поиск / фильтр / сортировка** — мгновенный поиск по имени, фильтр по типу (Images / Documents / Video / Audio / Archives), сортировка по имени / дате / размеру
- **Загрузка файлов** — множественная загрузка с проверкой MIME, расширения и размера. Drag-and-drop из файлового менеджера в любую область страницы. Redesigned modal с превью выбранных файлов и размером.
- **Replace file** — перезапись файла по тому же пути (контент меняется, URL не ломается)
- **Move file** — перемещение через folder browser без ввода путей вручную
- **Создание папок** — прямо из интерфейса, с проверкой на существование
- **Переименование** — с валидацией конфликтов и дубликатов
- **Bulk delete** — массовое удаление выбранных файлов из selection bar
- **Удаление** — с подтверждением
- **Скачивание** — по клику
- **URL файла** — просмотр ссылки с копированием
- **Inline-валидация** — ошибки показываются прямо в модалках, всё локализовано
- **Два вида** — таблица и сетка (grid)
- **Пикер запоминает папку** — при повторном открытии возвращается в последнюю папку
- **Lazy-load** — превью загружаются только при скролле к ним
- **Cache-busting** — после Replace браузер автоматически обновляет изображение
- **Picker-поле** — выбор файлов из менеджера прямо в форме
- **Drag-and-drop reorder** — перетаскивание для изменения порядка в picker
- **Layouts / Json** — полная интеграция с moonshine/layouts-field и Json-полями

### Authorization (опционально)

[](#authorization-опционально)

По умолчанию любой аутентифицированный юзер MoonShine имеет полный доступ к менеджеру. Для ограничения — задайте Gate ability в `.env`:

```
MOONSHINE_MEDIA_MANAGER_ABILITY=manage-media
```

И определите Gate в `AuthServiceProvider`:

```
use Illuminate\Support\Facades\Gate;

Gate::define('manage-media', function (User $user) {
    return $user->hasRole('admin');
});
```

Теперь только админы имеют доступ. Остальные получают 403.

### События

[](#события)

Пакет диспатчит события для интеграции с внешним кодом:

СобытиеКогдаПараметры`MediaManagerFileUploaded`Файл загружен`$path, $disk``MediaManagerFileReplaced`Файл заменён (Replace)`$path, $disk``MediaManagerFileDeleted`Файл удалён`$path, $disk````
use YuriZoom\MoonShineMediaManager\Events\MediaManagerFileUploaded;

protected $listen = [
    MediaManagerFileUploaded::class => [
        GenerateThumbnailListener::class,
    ],
];
```

### Конфигурация v4

[](#конфигурация-v4)

ПараметрПо умолчаниюОписание`disk``public`Диск файлового хранилища (только локальный)`allowed_ext``jpg,jpeg,png,...`Разрешённые расширения (с MIME-проверкой)`max_file_size``10485760` (10 MB)Макс. размер загружаемого файла`rename_duplicates``true`Переименовать дубликат (`file.jpg` → `file-1.jpg`) вместо перезаписи`auto_menu``true`Автоматически добавить в боковое меню`ability``null`Gate ability для авторизации (`null` = без проверки)`default_view``table`Вид по умолчанию: `table` или `list`---

Настройка v3 (MoonShine 4)
--------------------------

[](#настройка-v3-moonshine-4)

Добавьте в `config/moonshine.php`:

```
'media_manager' => [
    'auto_menu' => true,
    'disk' => config('filesystem.default', 'public'),
    'allowed_ext' => 'jpg,jpeg,png,pdf,doc,docx,zip',
    'default_view' => 'table',
],
```

Для добавления в меню:

```
use YuriZoom\MoonShineMediaManager\Pages\MediaManagerPage;

protected function menu(): array
{
    return [
        MenuItem::make(new MediaManagerPage()),
    ];
}
```

---

Настройка v2 (MoonShine 3)
--------------------------

[](#настройка-v2-moonshine-3)

Если необходимо изменить настройки, добавьте в файл `config/moonshine.php`:

```
[
    'media_manager' => [
        // Автоматическое добавление в меню
        'auto_menu' => true,
        // Корневая директория
        'disk' => config('filesystem.default', 'public'),
        // Разрешенные для загрузки расширения файлов
        'allowed_ext' => 'jpg,jpeg,png,pdf,doc,docx,zip',
        // Вид менеджера по-умолчанию
        'default_view' => 'table',
    ]
]
```

Для добавления в меню в `app/MoonShine/Layouts/MoonShineLayout.php`:

```
use YuriZoom\MoonShineMediaManager\Pages\MediaManagerPage;

protected function menu(): array
{
    return [
        MenuItem::make(new MediaManagerPage()),
    ];
}
```

---

Разработка
----------

[](#разработка)

Для сборки ассетов (JS + CSS) из исходников:

```
npm install
npm run build
```

Готовые файлы появятся в `dist/`. Для публикации в проекте:

```
php artisan vendor:publish --tag=moonshine-media-manager-assets --force
```

---

Лицензия
--------

[](#лицензия)

[The MIT License (MIT)](LICENSE).

###  Health Score

53

—

FairBetter than 96% of packages

Maintenance90

Actively maintained with recent releases

Popularity30

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 74.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~32 days

Recently: every ~3 days

Total

24

Last Release

49d ago

Major Versions

1.x-dev → 2.0.02025-03-06

2.x-dev → 3.0.02025-11-11

3.x-dev → 4.0.02026-05-16

### Community

Maintainers

![](https://www.gravatar.com/avatar/b9d9366ce52d73326cf2d9908a6639ae62708d6c06e945ce3f0f210aa1f8a607?d=identicon)[yurizoom](/maintainers/yurizoom)

---

Top Contributors

[![povly](https://avatars.githubusercontent.com/u/48402954?v=4)](https://github.com/povly "povly (88 commits)")[![yurizoom](https://avatars.githubusercontent.com/u/18616112?v=4)](https://github.com/yurizoom "yurizoom (30 commits)")

---

Tags

managermediamoonshine

### Embed Badge

![Health badge](/badges/yurizoom-moonshine-media-manager/health.svg)

```
[![Health](https://phpackages.com/badges/yurizoom-moonshine-media-manager/health.svg)](https://phpackages.com/packages/yurizoom-moonshine-media-manager)
```

###  Alternatives

[laravel-admin-ext/media-manager

Media manager for laravel

135144.9k4](/packages/laravel-admin-ext-media-manager)[tomatophp/filament-media-manager

Manage your media files using spatie media library with easy to use GUI for FilamentPHP

14955.0k3](/packages/tomatophp-filament-media-manager)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
