При проектировании, часто приходится сталкиваться с вопросом: какое именно решение использовать в качестве админ-панели, при разработке под Laravel. Рассмотрев разнообразные варианты, мы остановили свой выбор на SleepingOwlAdmin 4-ой версии и добавили к ней управление пользователями, ролями и правами через пакет Sentinel. А также добавили регистрацию и авторизацию через Facebook, Google+, VKontakte и реализовали заготовку под REST/RESTful API с помощью пакета Dingo.
Когда мы начали использовать Laravel в разработке, вопрос CRUD-генератора для самых простых интерфейсов встал очень остро. Разрабатывать свою админ-панель с нуля не хотели принципиально и сделали исследование возможностей существующих пакетов для Laravel.
В наш short-list вышли две системы - Sleeping Owl и Frozennode, которые сравнивались по 15 критериям.
Требование/критерий | Frozennode | Комментарий | Sleeping Owl | Комментарий | |
1. Быстрое создание CRUD-сущностей - чтобы создание нового объекта и интерфейса администрирования под него не занимало больше чем 20 минут | Отлично | Хорошо | |||
2. Поддержка связанных объектов: т.е. если у нас есть в объявлении поле Город чтобы можно было выбрать в админке город а не числовой id-шник | Отлично | Отлично | |||
3. Возможность добавит фильтры/фильтры из коробки на странице реестра | Отлично | Очень простое добавление фильтров реестра из коробки | Отлично | Выглядит так | |
4. Очень желательно: инлайн-редактирование прямо в реестре (но не в ущерб простоте кастомизации) | Плохо | не реализовано | Плохо | не реализовано | |
5. Пагинация на страницах реестра | Отлично | Выглядит так | Отлично | Выглядит так | |
6. Возможность кастомизировать страницы реестра кодом просто (скрывать/удалять стобцы, делать кастомное отображение полей) | Хорошо | В рамках коробки все приемлемо | Отлично | Тут явно больше возможностей для кастомизации | |
7. Очень желательно: редактирование одной записи не попапом/сайдбаром а отдельной страницей (может быть много полей, в попапе будет куцо) | Хорошо | Нужно допиливать верстку показывая форму из сайдбара во всю ширину экрана. Страница отдельная | Отлично | ||
8. Очень желательно: возможность локализации админки на русский (быстро) или русский в комплекте | Отлично | Поддерживается порядка 20-ти языков интерфейса | Отлично | Поддерживается ru и en | |
9. Возможность настроить админку на уже созданные таблицы/модели (т.е. создали модель, в админке прописали что нам надо, и она "подхватила" записи, не требуя модификации их под себя) | Отлично | Отлично | |||
10. Отдельная авторизация для пользователей админки | Удовлетворительно | Использует родную авторизацию Laravel | Отлично | Пользователи админки - отдельная сущность в системе, хранятся в отдельной таблице | |
11. Очень желательно: распределение прав доступа по ролям (CRUD) пользовтелей админки | Хорошо | Нет встроенной системы авторизации, использует авторизацию уровня фреймворка | Отлично | Есть возможнось тонкой настройки ролей и прав, но это не коробка - нужно писать код и разбираться | |
12. Поддержка текущей стабильной версии фреймворка Laravel | Отлично | Отлично | |||
13. Простота использования/скорость добавления новых элементов | Отлично | Хорошо | Сложнее, но больше возможностей для кастомизации | ||
14. Внешний вид | Хорошо | Отлично | |||
15. Популярность, количество скачиваний и рейтинг | Отлично | Хорошо |
В итоге мы останавлись на Sleeping Owl как на более перспективном варианте. Опробовав её на нескольких проектах, добавили к ней управление пользователями, ролями и правами через пакет Sentinel и регистрацию и авторизацию через Facebook, Google+, VKontakte.
Столкнувшись позже с задачей разработки серверного backend под мобильные приложения реализовали заготовку под REST/RESTful API с помощью пакета Dingo.
Код сборки на GitHub: https://github.com/evergreen-it-dev/laravel5.3_sowl4_sentinel_dingo
Если есть желание настроить всё самостоятельно, там же предлагаем пошаговую инструкцию, с минимумом лишнего текста и массой кода. Остались вопросы? Обращайтесь к нам, с радостью поможем.
Сергей Рыбалко, разработчик Evergreen