Laravel предоставляет множество мощных функций «из коробки». Но по мере роста вашего приложения вам может потребоваться дополнительный функционал, такой как управление ролями, логирование действий, работа с медиафайлами, резервное копирование, фильтрация API и многое другое.

Именно здесь на помощь приходит Spatie.

Spatie — это компания, известная созданием open-source пакетов для PHP и Laravel, которые помогают разработчикам решать типичные задачи разработки, не изобретая велосипед.

Но возникает один частый вопрос:

Какой пакет Spatie мне использовать и когда?

В этом руководстве мы рассмотрим некоторые из наиболее полезных пакетов Spatie, их назначение, практические сценарии использования и команды для установки.

Давайте начнем!

1. Управление ролями и правами доступа пользователей

1. spatie/laravel-permission

Назначение: Управление ролями и правами доступа в приложениях на Laravel.

Представьте, что вы создаете ERP-систему с разными типами пользователей:

  • Администратор
  • Менеджер
  • Бухгалтер
  • Менеджер по продажам
  • Сотрудник

Каждому пользователю нужны свои права доступа.

Вместо того чтобы вручную создавать полноценную систему ролей и прав, вы можете воспользоваться этим пакетом.

Установка:

composer require spatie/laravel-permission

Пример:

$user->assignRole('admin');$user->givePermissionTo('edit products');if ($user->can('edit products')) {
    // Allow product editing
}

Когда использовать?

  • ERP и HRM системы
  • Админ-панели
  • Приложения с несколькими ролями
  • Приложения со сложными требованиями к авторизации

Документация: https://spatie.be/docs/laravel-permission

2. Логирование действий и аудит

2. spatie/laravel-activitylog

Назначение: Автоматическая запись значимых действий в приложении.

Например, в ERP-системе вам может понадобиться знать:

  • Кто создал счет?
  • Кто обновил информацию о клиенте?
  • Кто изменил цену товара?
  • Кто удалил запись?

Этот пакет помогает вести историю действий.

Установка:

composer require spatie/laravel-activitylog

Пример:

activity()
    ->causedBy(auth()->user())
    ->performedOn($product)
    ->log('Product price updated');

Вы также можете использовать трейт LogsActivity  из этого пакета для логирования изменений модели.

Когда использовать?

  • Аудиторские следы (Audit trails)
  • Мониторинг действий сотрудников
  • ERP и бухгалтерские системы
  • История изменений записей
  • Логи административных действий

Документация: https://spatie.be/docs/laravel-activitylog

3. Управление файлами и медиа

3. spatie/laravel-medialibrary

Назначение: Привязка файлов и медиа к Eloquent-моделям.

Предположим, в вашем приложении есть:

  • Изображения товаров
  • Аватары пользователей
  • Корпоративные документы
  • Превью для блога
  • Вложения к счетам

Управление всеми этими файлами вручную может стать сложной задачей.

Media Library предоставляет структурированный способ привязки медиафайлов к моделям и управления их конвертацией.

Установка:

composer require spatie/laravel-medialibrary

Пример:

$product
    ->addMedia($request->file('image'))
    ->toMediaCollection('products');

Получение медиа:

$product->getFirstMediaUrl('products');

Когда использовать?

  • E-commerce приложения
  • CMS и сайты-портфолио
  • Системы управления документами
  • Управление изображениями профилей
  • Приложения, требующие конвертации изображений

Документация: https://spatie.be/docs/laravel-medialibrary

4. Резервное копирование базы данных

4. spatie/laravel-backup

Назначение: Создание резервных копий файлов вашего приложения и баз данных.

Представьте, что ваш продакшн-сервер падает или важные данные удаляются. Без надежной резервной копии восстановление приложения может стать сложной задачей.

Этот пакет помогает автоматизировать резервное копирование базы данных и файлов, а также может отправлять уведомления о процессе резервного копирования.

Установка:

composer require spatie/laravel-backup

Полезная команда:

php artisan backup:run

Когда использовать?

  • Продакшн-приложения
  • ERP и бухгалтерские системы
  • E-commerce платформы
  • Приложения, содержащие важные бизнес-данные

Совет: Резервная копия полезна только в том случае, если вы можете ее восстановить. Регулярно тестируйте процесс восстановления и храните бэкапы отдельно от основного сервера.

Документация: https://spatie.be/docs/laravel-backup

5. Фильтрация и сортировка API

5. spatie/laravel-query-builder

Назначение: Построение API-запросов с использованием параметров запроса.

Предположим, вашему фронтенду нужно фильтровать товары по категории, цене, статусу и порядку сортировки.

Вместо того чтобы вручную прописывать каждое возможное условие фильтрации в контроллере, этот пакет предоставляет структурированный подход.

Установка:

composer require spatie/laravel-query-builder

Пример:

use Spatie\QueryBuilder\QueryBuilder;$products = QueryBuilder::for(Product::class)
    ->allowedFilters(['name', 'status'])
    ->allowedSorts(['price', 'created_at'])
    ->paginate(15);

Пример API-запроса:

/api/products?filter[name]=Laptop&sort=-price

Когда использовать?

  • REST API
  • Vue.js и React приложения
  • Фильтрация товаров
  • Системы поиска и сортировки
  • Сложные страницы со списками

Документация: https://spatie.be/docs/laravel-query-builder

6. Объекты передачи данных (DTO)

6. spatie/laravel-data

Назначение: создание структурированных объектов данных для передачи и валидации информации.

В крупных приложениях контроллеры могут стать сложными в поддержке, если они содержат слишком много логики обработки запросов, валидации и преобразования данных.

Laravel Data помогает организовать эту логику в виде переиспользуемых объектов данных.

Установка:

composer require spatie/laravel-data

Пример:

use Spatie\LaravelData\Data;class UserData extends Data
{
    public function __construct(
        public string $name,
        public string $email,
    ) {}
}

Создание объекта данных:

$userData = UserData::from([
    'name' => 'Jalis',
    'email' => 'jalis@example.com',
]);

Когда использовать?

  • Крупные приложения на Laravel
  • Структуры запросов и ответов API
  • Преобразование данных
  • Переиспользуемая валидация и сериализация
  • Приложения со сложными требованиями к DTO

Документация: https://spatie.be/docs/laravel-data

7. Полное кэширование ответов

7. spatie/laravel-responsecache

Назначение: кэширование полных HTTP-ответов для повышения производительности.

Обычно запрос в Laravel может выполнять middleware, контроллеры, запросы к базе данных и рендеринг представлений перед тем, как вернуть ответ.

Response Cache может сохранять подходящие ответы и отдавать их повторно при последующих соответствующих запросах.

Установка:

composer require spatie/laravel-responsecache

Когда использовать?

  • Публичные веб-сайты
  • Блоговые платформы
  • Сайты на CMS
  • Публичные лендинги
  • Страницы, которые редко меняются

Важно: будьте осторожны при кэшировании аутентифицированных или персонализированных ответов. Настройте правила кэширования так, чтобы приватный контент одного пользователя никогда не отдавался другому.

Документация: https://spatie.be/docs/laravel-responsecache

8. Мультиарендные приложения

8. spatie/laravel-multitenancy

Назначение: помощь в создании приложений, обслуживающих несколько независимых арендаторов (теннантов).

Представьте, что вы разрабатываете SaaS POS-систему. Разные компании используют одно и то же приложение, но каждая компания должна иметь доступ только к своим собственным данным.

Например:

  • У компании А свои клиенты.
  • У компании B свои товары.
  • У компании C свои сотрудники.

Этот пакет предоставляет инструменты для управления контекстом арендатора и специфичным для него поведением.

Установка:

composer require spatie/laravel-multitenancy

Когда использовать?

  • SaaS-приложения
  • ERP-системы для нескольких компаний
  • Платформы по подписке
  • POS-приложения для нескольких бизнесов

Важно: пакет для мультиарендности не делает автоматически каждый запрос безопасным. Вы должны тщательно спроектировать и протестировать изоляцию арендаторов, авторизацию, соединения с базой данных и доступ к данным.

Документация: https://spatie.be/docs/laravel-multitenancy

9. Перевод моделей

9. spatie/laravel-translatable

Назначение: хранение версий атрибутов модели на разных языках.

Предположим, у вас есть интернет-магазин, поддерживающий английский и бенгальский языки.

У товара может быть:

  • Английское название: Mobile Phone
  • Бенгальское название: মোবাইল ফোন

Вместо создания отдельных колонок для каждого языка, этот пакет поддерживает переводимые атрибуты модели.

Установка:

composer require spatie/laravel-translatable

Пример:

$product->setTranslations('name', [
    'en' => 'Mobile Phone',
    'bn' => 'মোবাইল ফোন',
]);

Получение перевода:

$product->getTranslation('name', 'bn');

Когда использовать?

  • Многоязычные сайты
  • Платформы электронной коммерции
  • CMS-приложения
  • Международные SaaS-продукты

Документация: https://spatie.be/docs/laravel-translatable

10. Генерация слагов

10. spatie/laravel-sluggable

Назначение: автоматическая генерация понятных для URL слагов из атрибутов модели.

Например:

Product Name: Laravel Developer CourseSlug: laravel-developer-course

Установка:

composer require spatie/laravel-sluggable

Когда использовать?

  • Блоговые приложения
  • URL товаров
  • CMS-платформы
  • SEO-дружественные URL

Документация: https://github.com/spatie/laravel-sluggable

11. Тегирование моделей

11. spatie/laravel-tags

Назначение: прикрепление тегов к Eloquent-моделям.

Например, у записи в блоге могут быть такие теги, как:

  • Laravel
  • PHP
  • Программирование
  • Backend-разработка

Вы также можете использовать теги для товаров, статей и других моделей.

Установка:

composer require spatie/laravel-tags

Когда использовать?

  • Блоговые платформы
  • Категоризация товаров
  • Системы управления контентом
  • Базы знаний

Документация: https://spatie.be/docs/laravel-tags

12. Мониторинг здоровья приложения

12. spatie/laravel-health

Назначение: мониторинг состояния (здоровья) приложения на Laravel.

Продакшн-приложение может зависеть от нескольких сервисов:

  • База данных
  • Кэш
  • Хранилище
  • Воркеры очередей
  • Внешние сервисы

Если важный сервис перестает работать, вы хотите узнать об этом до того, как пользователи начнут сообщать о проблемах.

Установка:

composer require spatie/laravel-health

Когда использовать?

  • Продакшн-приложения
  • SaaS-платформы
  • Приложения с фоновыми воркерами
  • Системы, требующие проверок здоровья и мониторинга

Документация: https://spatie.be/docs/laravel-health

13. Генерация PDF

13. spatie/laravel-pdf

Назначение: генерация PDF-документов из приложений на Laravel.

Примеры включают:

  • Счета-фактуры
  • Отчеты
  • Квитанции
  • Деловые документы
  • Печатные сводки

Установка:

composer require spatie/laravel-pdf

Когда стоит использовать?

  • ERP-приложения
  • Бухгалтерские системы
  • Счета для электронной коммерции
  • Системы отчетности

Важно: перед развертыванием проверьте драйвер рендеринга и серверные зависимости. Генерация PDF может потребовать дополнительного программного обеспечения в зависимости от выбранного драйвера.

Документация: https://spatie.be/docs/laravel-pdf

14. HTML в изображение или PDF

14. browsershot

Назначение: преобразование веб-страниц или HTML в скриншоты, изображения или PDF с использованием браузерного движка.

Например, вам может потребоваться создать:

  • Скриншоты веб-сайтов
  • Превью-изображения для социальных сетей
  • Отчеты на основе HTML
  • Визуальные превью страниц

Установка:

composer require spatie/browsershot

Когда стоит использовать?

  • Генерация скриншотов
  • Автоматическая генерация отчетов
  • Конвертация HTML в изображения
  • Системы превью веб-сайтов

Важно: Browsershot требует дополнительных серверных зависимостей, включая Node.js и Puppeteer/Chrome. Проверьте среду развертывания перед выбором этого инструмента.

Документация: https://spatie.be/docs/browsershot

15. Обработка вебхуков

15. spatie/laravel-webhook-client

Назначение: получение входящих вебхуков от внешних сервисов.

Например, платежный провайдер может отправить вашему приложению уведомление об успешном или неудачном платеже.

Вместо того чтобы вручную создавать весь рабочий процесс получения вебхуков, этот пакет предоставляет структурированное решение.

Установка:

composer require spatie/laravel-webhook-client

Когда стоит использовать?

  • Интеграция с платежными шлюзами
  • Интеграция со сторонними API
  • Уведомления от внешних сервисов
  • Событийно-ориентированные приложения

16. spatie/laravel-webhook-server

Назначение: отправка вебхуков из вашего Laravel-приложения во внешние системы.

Например, когда создается новый заказ, ваше приложение может уведомить другой сервис.

Установка:

composer require spatie/laravel-webhook-server

Когда стоит использовать?

  • SaaS-интеграции
  • Взаимодействие с внешними системами
  • Уведомления о заказах
  • Событийно-ориентированные архитектуры

Совет: вебхуки должны быть аутентифицированы, проверены и безопасно обработаны. Используйте повторные попытки (retries) и идемпотентность для обработки дублирующихся доставок.

Документация:

17. Аналитика веб-сайта

17. spatie/laravel-analytics

Назначение: получение данных аналитики веб-сайта из Google Analytics.

Например, вы можете захотеть отобразить:

  • Посетителей сайта
  • Просмотры страниц
  • Популярные страницы
  • Статистику трафика

Установка:

composer require spatie/laravel-analytics

Когда стоит использовать?

  • Админ-панели
  • Сайты-портфолио
  • Блоговые платформы
  • Маркетинговые аналитические панели

Этот пакет извлекает данные аналитики из Google Analytics; он не является заменой системы отслеживания событий внутри вашего приложения.

Документация: https://github.com/spatie/laravel-analytics

18. Генерация карты сайта (Sitemap)

18. spatie/laravel-sitemap

Назначение: генерация XML-карт сайта для поисковых систем.

Карта сайта помогает поисковым системам находить URL-адреса на вашем веб-сайте.

Установка:

composer require spatie/laravel-sitemap

Когда стоит использовать?

  • Блоги
  • Сайты электронной коммерции
  • CMS-приложения
  • Крупные сайты с динамическими страницами

Документация: https://spatie.be/docs/laravel-sitemap

19. Защита от спама

19. spatie/laravel-honeypot

Назначение: помощь в защите форм от автоматизированных спам-отправок.

Honeypot добавляет скрытое поле, которое обычные пользователи не должны заполнять, в то время как некоторые автоматизированные боты могут это сделать.

Установка:

composer require spatie/laravel-honeypot

Когда стоит использовать?

  • Контактные формы
  • Формы регистрации
  • Публичные формы отправки данных
  • Системы комментариев

Honeypot — это лишь один уровень защиты от спама, а не полная замена ограничения частоты запросов (rate limiting), валидации или других средств контроля от злоупотреблений.

Документация: https://github.com/spatie/laravel-honeypot

20. Управление состояниями модели

20. spatie/laravel-model-states

Назначение: управление сложными состояниями и переходами в моделях Eloquent.

Представьте систему управления заказами со следующими статусами:

  • В ожидании (Pending)
  • Подтвержден (Confirmed)
  • В обработке (Processing)
  • Отправлен (Shipped)
  • Доставлен (Delivered)
  • Отменен (Cancelled)

По мере роста приложения управление каждым возможным переходом статуса через разбросанные условия становится сложным.

Этот пакет помогает организовать состояния и переходы в специализированные классы.

Установка:

composer require spatie/laravel-model-states

Когда стоит использовать?

  • Системы управления заказами
  • Рабочие процессы утверждения
  • Управление подписками
  • Приложения для бизнес-процессов

Документация: https://spatie.be/docs/laravel-model-states

21. Файлы Excel и CSV

21. spatie/simple-excel

Назначение: чтение и запись файлов Excel и CSV с помощью простого API.

Например, ERP-приложению может потребоваться экспортировать тысячи записей клиентов или импортировать данные о продуктах.

Установка:

composer require spatie/simple-excel

Когда стоит использовать?

  • Импорт и экспорт данных
  • Отчеты ERP
  • Миграция данных клиентов
  • Системы управления продуктами

Документация: https://github.com/spatie/simple-excel

22. Оптимизация изображений

22. spatie/laravel-image-optimizer

Назначение: Оптимизация изображений для уменьшения размера файлов.

Большие изображения могут увеличить время загрузки страницы и потреблять лишнее место в хранилище и трафик.

Этот пакет помогает оптимизировать изображения с помощью поддерживаемых инструментов оптимизации.

Установка:

composer require spatie/laravel-image-optimizer

Когда использовать?

  • Изображения товаров в интернет-магазинах
  • Загрузка файлов в CMS
  • Миниатюры для блога
  • Приложения с большим количеством изображений

Важно: Необходимые бинарные файлы для оптимизации должны быть установлены на сервере.

Документация: https://github.com/spatie/laravel-image-optimizer

23. Мониторинг неудачных заданий очереди

23. spatie/laravel-failed-job-monitor

Назначение: Получение уведомлений при сбое заданий в очереди.

Представьте, что ваше приложение отправляет электронные письма, обрабатывает платежи или создает отчеты с помощью очередей Laravel.

Если задание завершилось с ошибкой, вы, вероятно, захотите узнать об этом немедленно, а не обнаруживать проблему позже.

Установка:

composer require spatie/laravel-failed-job-monitor

Когда использовать?

  • Приложения, использующие очереди Laravel
  • Системы обработки электронной почты
  • Фоновая генерация отчетов
  • Продакшн-приложения

Документация: https://github.com/spatie/laravel-failed-job-monitor

24. Мониторинг расписания

24. spatie/laravel-schedule-monitor

Назначение: Мониторинг запланированных задач и обнаружение случаев, когда ожидаемые команды не выполняются по расписанию.

Планировщик Laravel полезен для повторяющихся задач, но в продакшене вам также нужна видимость того, действительно ли эти задачи выполняются.

Установка:

composer require spatie/laravel-schedule-monitor

Когда использовать?

  • Автоматизированные отчеты
  • Ежедневное резервное копирование
  • Продление подписок
  • Запланированные уведомления
  • Мониторинг cron-задач в продакшене

Документация: https://github.com/spatie/laravel-schedule-monitor

25. Динамические настройки приложения

25. spatie/laravel-settings

Назначение: Хранение и управление настройками приложения с использованием типизированных классов настроек.

Например, в приложении могут быть настраиваемые значения, такие как:

  • Название компании
  • Валюта
  • Процентная ставка налога
  • Префикс счета
  • Контактная информация компании

Вместо того чтобы разбрасывать эти настройки по всему коду, вы можете организовать их в специализированные классы настроек.

Установка:

composer require spatie/laravel-settings

Когда использовать?

  • SaaS-приложения
  • ERP-системы
  • Панели административного управления
  • Приложения с настраиваемыми бизнес-правилами

Документация: https://spatie.be/docs/laravel-settings

Краткое руководство по выбору пакетов

Вот краткая справка, которая поможет вам выбрать подходящий пакет для вашего следующего проекта на Laravel.

Ваша задачаПакетРоли и права доступаlaravel-permissionЖурнал активностиlaravel-activitylogУправление файлами и медиаlaravel-medialibraryРезервное копирование базы данных и файловlaravel-backupФильтрация и сортировка APIlaravel-query-builderОбъекты данных и преобразованиеlaravel-dataПолное кэширование HTTP-ответовlaravel-responsecacheМультиарендная архитектураlaravel-multitenancyАтрибуты на нескольких языкахlaravel-translatableАвтоматические URL-слагиlaravel-sluggableТегирование моделейlaravel-tagsПроверка работоспособности приложенияlaravel-healthГенерация PDFlaravel-pdfСкриншоты веб-страницbrowsershotПолучение вебхуковlaravel-webhook-clientОтправка вебхуковlaravel-webhook-serverИнтеграция с Google Analyticslaravel-analyticsГенерация XML-карты сайтаlaravel-sitemapЗащита от спамаlaravel-honeypotУправление состоянием моделиlaravel-model-statesОбработка Excel и CSVsimple-excelОптимизация изображенийlaravel-image-optimizerУведомления о сбоях в очередиlaravel-failed-job-monitorМониторинг запланированных задачlaravel-schedule-monitorНастройки приложенияlaravel-settings

Краткие советы перед установкой любого пакета Spatie

1. Не устанавливайте все пакеты подряд.

Устанавливайте только то, что действительно нужно вашему приложению. Каждая дополнительная зависимость создает вопросы обслуживания и совместимости.

2. Проверяйте совместимость с Laravel и PHP.

Перед установкой проверьте требования Composer и поддерживаемые версии пакета.

composer show spatie/laravel-permission --all

3. Читайте официальную документацию.

У пакетов могут быть разные требования к установке, конфигурации, миграциям и развертыванию.

4. Тестируйте пакеты перед развертыванием в продакшене.

Проверяйте права доступа, обработку файлов, резервное копирование, кэширование и интеграции в среде разработки или на стейджинге.

5. Сначала разберитесь во встроенных функциях Laravel.

В Laravel уже есть встроенные инструменты для аутентификации, политик авторизации, очередей, кэширования, валидации, уведомлений и многого другого.

Сторонний пакет должен решать реальную проблему или улучшать поддерживаемость кода, а не просто добавлять еще одну зависимость.