Дата публикации: 23.10.2024 в 17:39

Кейс MoonShine #3. Панель управления контрактами

Александр AkostDevАлександр AkostDev
0 комментария

Всем доброго дня!

В этой небольшой статье расскажу как пришел к применению MoonShine в качестве админ-панели. Работаю бэкэнд разработчиком в офисе. Основные инструменты - PHP, Laravel и CMS Битрикс.

Краткое ТЗ

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

Выбор MoonShine

Изначально, проект должен был быть интегрирован с CMS Битрикс, так как почти все наши проекты в студии были на нём. Но, так как проект был не очень срочный, и конкретных сроков не было, то я предложил поэкспериментировать с другими фреймворками и выбор пал на Laravel. Затем, задача была найти подходящую и, самое главное, не сложную в реализации админ-панель. Так как, на тот момент с Laravel я был знаком около полугода и не имел дела с админками (только с устаревшей версией OctoberCMS).

Принялся искать варианты. Основные критерии для поиска:

  • бесплатно
  • широкие возможности по кастомизации

И, почти сразу я наткнулся на MoonShine. На тот момент была ещё версия 1, но и её коробочная версия почти покрывала мои потребности. Особенно подкупили инструкции в формате видео на русском языке.

Сложности при реализации

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

В скором времени вышла вторая версия MoonShine и я сразу же переехал на неё, хоть она и была ещё сырой.

Кастомные решения

Мне нужно было сделать отображение списания услуг по периодам:

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

И тогда я решил залезть под капот и доработать этот функционал - был "изобретён" метод persist, который определял, нужно запоминать состояние или нет. Так я сделал первый PR в MoonShine, который был одобрен и добавлен в релиз.

Общий вывод

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

MoonShine полностью устраивает, буду настаивать чтобы все новые проекты в студии делались на MoonShine =)

ОбщайсяРазвивайсяУчисьРаботай
ОбщайсяРазвивайсяУчисьРаботай
ОбщайсяРазвивайсяУчисьРаботай
ОбщайсяРазвивайсяУчисьРаботай