При проектуванні часто доводиться стикатися з питанням: яке саме рішення використовувати в якості адмін-панелі, при розробці під 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