Главная Новости

Laravel admin panel: 8 packages

Опубликовано: 01.09.2018

видео Laravel admin panel: 8 packages

Laravel - Create Blog and Admin Panel | Download Assets and Install Laravel #1

Приветствую вас, друзья!



Наконец-то завершился мой затянувшийся отдых от написания статей о Laravel PHP framework, который я себе устроил полгода назад, написав последнюю на данный момент публикацию об обновлении версий Laravel на существующих проектах.

Честно скажу, что не планировал делать его таким долгим. Изначально в планах был месяц и 2-3 статьи о капче , принципами работы и заработком на которой я тогда увлёкся. Да и от Laravel я на тот момент тоже устал, т.к. на протяжении нескольких месяцев писал только о нём.


Blog with Laravel Admin Panel

В итоге, запланированный месяц затянулся на 6, а 2-3 статьи на 22 публикации на посторонние темы. Естественно, всё это привело к тому, что я жутко соскучился по Laravel, т.е. цель отпуска была достигнута в полной мере

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


Laravel Forum Package - Chatter

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

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

Поехали!

Обзор Laravel admin panel: особенности

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

В статье вы увидите описание лишь тех продуктов, которые совместимы с Laravel 5.5, т.к. на данный момент — это текущая версия нашего Laravel portfolio сайта (в ближайшем будущем, когда я наконец начну реализовывать админку на сайте, я планирую обновиться до 5.6, поэтому следите за коммитами в репозитории).

Устаревшие пакеты, которые у меня не запустились, вы увидите в конце статьи.

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

Ещё одна особенность обзора заключается в том, что кроме сортировки пакетов по категориям они будут расположены в порядке убывания по количеству звёзд на Github, откуда они все, естественно, и устанавливались.

И отсюда следует последняя особенность — все рассматриваемые в данной статье решения являются opensource, т.е. бесплатными и с открытым кодом. Коммерческим продуктам типа BackPack я решил не уделять внимание.

Визуальные конструкторы Laravel admin panel

Основной особенностью данной категории решений для Laravel административных панелей является максимальная визуализация рабочего процесса. Они очень похожи на те, которые доступны из коробки в популярных CMS: WordPress, OpenCart, Magento и др.

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

Идеальное решение для тех, кому нужно сделать Laravel админку в максимально сжатые сроки и при этом удовлетворить все потребности заказчиков (порою даже самые извращённые), которые хотят всё кастомизировать самостоятельно, без дополнительных затрат на разработчиков.

Laravel Voyager

Рейтинг на Github:  5875 звёзд

Исходный код: https://github.com/the-control-group/voyager

Официальный сайт:  https://laravelvoyager.com/

Установка простая и состоит из 3 шагов: установки пакета через Composer, создание пустой БД и установки данных пакета (зависимости, запуск миграций и т.д.).

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

При установке данных пакета можно воспользоваться опцией —with-dummy, чтобы установить админку с набором демо-данных (dummy data). В них входит 1 аккаунт администратора (если до сих пор у вас не было пользователей в БД в таблице users), 1 демо страница, 4 поста, 2 категории и 7 настроек.

После установки данная Laravel админка доступна по адресу site.url/admin, при переходе на который вы увидите слегка экстравагантную форму входа:

Лично я — не любитель захламлять сайт различной тестовой информацией, которую потом всё равно придётся рано или поздно удалять. Поэтому себе я поставил Laravel Voyager админку без демо данных.

В итоге, после установки Laravel Voyager admin и входа я увидел следующее:

После я приступил к настройке Laravel Voyager и изучению её особенностей.

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

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

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

Также у Voyager Laravel admin panel есть своя система хуков, с помощью которой существует возможность расширять функционал админки и сайта дополнительными возможностями. На данный момент Voyager hooks не очень много, с полным перечнем которых вы можете познакомиться здесь — https://larapack.io/.

Из самых интересных — WordPress import и возможность проводить опросы на сайте.

Ну, и несомненная изюминка Voyager Laravel admin panel — это наличие менеджера БД и BREAD builer, которые позволяют иметь прямо в админке упрощённый аналог phpMyAdmin.

Менеджер базы данных позволяет редактировать структуру БД и таблиц, а BREAD builder — по сути, обыкновенный CRUD генератор для заполнения таблиц БД данными через админку, только вместо привычных Create, Read, Update, Delete создатели Voyager решили почему-то зашифровать иные действия: Browse, Read, Edit, Add, Delete.

Видимо, маркетологи и различные брендмейкеры в их команде тоже имеются

Должен сказать, что встроенный в админку менеджер БД — штука очень полезная, особенно, когда заказчики не дают доступ к базе, но хотят её структуру поменять Либо используют shared хостинг без SSH доступа, что делает невозможным запуск Laravel миграций в консоли сервера.

Сам уже однажды с такой ситуацией столкнулся, и наличие Voyager Laravel admin panel на сайте клиента меня тогда сильно спасло.

Ну, и ещё одна полезная плюшка — это возможность перевода UI админки (очень полезная фича, если ваш заказчик захочет локализованную панель) и поддержка мультиязычности у сущностей из коробки.

Проще говоря, Voyager Laravel admin panel позволяет задавать значения различным полям (названия товаров, тексты постов) на разных языках с возможностью быстрого их переключения.

Единственное, что мне не понравилось в Voyager, — это документация, которая доступна по этой ссылке — https://voyager.readme.io/docs.

Несмотря на то, что составлена она весьма недурно, в ней описаны далеко не все моменты, возникающие при работе с данной Laravel admin panel. Про ту же самую мультиязычность пришлось читать на GitHub — https://github.com/the-control-group/voyager/pull/561

В прочем, разработчики и сами признают этот недостаток, указав на стартовом экране доки приписку still in development .

Ну, и не по душе мне пришлась повёрнутось авторов Voyager Laravel admin panel на морской теме админки, которая может не каждому понравится. Так что готовьтесь к тому, что её, возможно, придётся кастомизировать по требованию заказчика.

Ну, а в целом, данная панель — достаточно простое и мощное решение, обладающее всем необходимым функционалом для реализации типовых блогов, Интернет магазинов и др. стандартных проектов, позволяя сделать из любого Laravel сайта некоторое подобие WordPress.

Laravel QuickAdmin

Рейтинг на Github: 438 звёзд

Исходный код:  https://github.com/LaravelDaily/quickadmin

Официальный сайт:  https://quickadminpanel.com/

Установка Laravel QuickAdmin прошла реально быстро (судя по переводу названия), просто и понятно.

Документация составлена достаточно подробно и описывает все основные моменты, возникающие при работе с админкой, начиная от её установки, заканчивая настройкой — http://laraveldaily.com/packages/quickadmin/. Правда, исчерпывающей её также нельзя назвать.

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

Что же я увидел из возможностей?

Во-первых , CRUD генератор сущностей присутствует. При создании новой сущности таблица в БД генерится автоматически. Поля можно добавлять, сколько угодно, с различными типами.

Правда, после создания CRUD контроллера ни удалять его, ни редактировать набор полей нельзя. Единственный вариант: удалить и создать снова или сделать всё вручную путём ручного прописывания в БД и модели.

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

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

Правда, пункты меню удалять нельзя, только вручную через БД.

В отличие от Voyager админки, мне понравилась удобная кастомизация генерируемого админкой кода. Все контроллеры и модели создаются в директориях Laravel по умолчанию (app/Http/Controllers/ и app/, соответственно). Не нужно их искать по всему проекту.

Теперь о том, что мне не понравилось в Laravel QuickAdmin. Прежде всего, это будущие проблемы при добавлении на сайт мультиязычности сущностей (в отличе от упоминавшегося уже Laravel Voyager admin).

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

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

Помимо открытого кода на GitHub у Laravel QuickAdmin также есть SaaS решение, цены на которое начинаются со 100$ в год. Помимо настройки админки в облаке тарифные планы подразумевают установку специально разработанных под QuickAdmin Premium модулей, саппорт разработчиков и удаление лейбла QuickAdmin из панели.

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

Генераторы Laravel админок

Главным отличием генераторов Laravel админок от визуальных конструкторов является то, что создание CRUD контроллеров, новых элементов меню и страниц происходит не после кликов на UI элементы, а в консоли либо вообще после создания вручную новых классов и наследования от имеющихся в пакете генератора.

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

Благодаря данным особенностям, данные продукты отлично подходят для реализации крупных проектов (причём, не только их админок), позволяя сокращать время на разработку однотипных классов и методов.

Однако, это обстоятельство предъявляет к ним серьёзные требования относительно чистоты и понятности кода. Если CRUD-классы будут плохо структурированы, а процесс генерации Laravel админ панели будет запутан, то использование данных продуктов может, наоборот, только увеличить сроки реализации.

Z-Song Laravel admin

Рейтинг на Github: 3201 звезды

Исходный код:  https://github.com/z-song/laravel-admin

Официальный сайт:  http://laravel-admin.org/

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

После логина в админке я сразу увидел, что она разработана на основе популярного AdminLTE admin template:

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

Добавление же новых происходит исключительно в консольном режиме.

Пакет предоставляет набор artisan команд для генерации контроллеров моделей, model-grid (страниц со списком сущностей с возможностью кастомизации её внешнего вида), model-form (страниц редактирования атрибутов отдельной сущности) и роутов для доступа ко всему этому.

Всё, что вам потребуется сделать самостоятельно, — это создать таблицу БД (проще всего с помощью Laravel миграций) и сгенерировать для неё модель.

Отличная функциональность без различного рода излишеств, режущих глаз, как, например, у Laravel QuickAdmin.

В общем, данный Laravel admin generator реально очень крутой и произвёл на меня положительное впечатление. Не зря им пользуются тысячи Laravel разработчиков, судя по звёздам на GitHub

InfyOm Laravel Generator

Рейтинг на Github:  1817 звёзд

Исходный код:  https://github.com/InfyOmLabs/laravel-generator

Официальный сайт:  http://labs.infyom.com/laravelgenerator/

Достаточно мощный Laravel package со слоганом «Получите ваше API и панель администрирования за считанные минуты», которым создатели делают акцент, в первую очередь, даже на генерацию API, а не на admin panel.

В состав данного Laravel пакета входит целых 3 генератора, использовать которые можно как в комплекте, так и поодично в рамках одного проекта:

генератор API; генератор Laravel admin panel; генератор Swagger документации для API.

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

Чтобы сообщить генератору, на основании каких данных стоит создавать модели и CRUD контроллеры, вы можете ввести всю необходимую информацию в консоли или использовать в качестве источника JSON файл. Также генерация возможна на основании существующих таблиц БД.

А ещё InfyOm Laravel Generator позволяет создавать тестовые данные с помощью Faker для тестирования генерируемых API методов.

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

class BookController extends AppBaseController { /** @var BookRepository */ private $bookRepository; public function __construct(BookRepository $bookRepo) { $this->bookRepository = $bookRepo; } /** * Display a listing of the Book. * * @param Request $request * @return Response */ public function index(Request $request) { $this->bookRepository->pushCriteria(new RequestCriteria($request)); $books = $this->bookRepository->all(); return view('books.index') ->with('books', $books); }

Ещё одна классная фишка данного генератора — он позволяет использовать четыре типа графических тем для оформления интерфейса админки:  AdminLTEMetronicBootstrap и  FlatLab . Можно даже подключать свою собственную тему, если будет такая необходимость.

Единственное, что мне не понравилось при работе с данной админкой, — это её лёгкая замудрённость. Для её установки и запуска с минимальными настройками лично у меня ушло раза в 3 больше времени, чем при использовании  Z-Song Laravel Admin , к примеру.

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

Laravel Sleeping Owl Admin

Рейтинг на Github: 486+496 (для старой версии) = 982 звёзды

Исходный код:  https://github.com/LaravelRUS/SleepingOwlAdmin

Официальный сайт:  https://sleepingowladmin.ru

Старая версия с саппортом Laravel до версии 5.1 включительно доступна здесь — https://github.com/sleeping-owl/admin

Одна из самых древних генераторов админок, которая за историю своего существования успела даже сменить репозиторий. Старая версия с саппортом Laravel до версии 5.1 включительно доступна здесь — https://github.com/sleeping-owl/admin

А также Sleeping Owl Laravel admin generator — это первый package админки, с которым мне пришлось поработать.

Дело было года 2 назад. Я тогда пришёл работать в компанию, у которой был корпоративный сайт на Laravel 4.2. Поскольку фирма делала первые шаги, и заказов было немного, мне было поручено заняться саппортом данного творения.

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

Sleeping Owl Admin тогда идеально подошла под мои требования (особенно порадовало, что это отечественный продукт с обширной докой и даже статьями на Хабре от создателей ), после чего я стал с ней разбираться. Скажу честно, что с задачей я справился спустя неделю мучений

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

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

Ещё одной серьёзной проблемой, которую не решал Sleeping Owl Laravel Admin, была невозможность организации мультиязычности хранимых в БД данных. Кроме того, на многие вопросы я не мог найти ответы в официальной документации, не смотря на то, что она довольна обширна — https://sleepingowladmin.ru/docs.

Поскольку я использовал данный Laravel package достаточно давно, я решил для уверенности установить его повторно, чтобы убедиться, насколько он изменился:

Честно говоря, эффекта «Вау» я не испытал. Заметил лишь, что админка достаточно серьёзно изменилась на фронте: её переписали под Vue.js, в качестве графического темплейта, похоже, использовали знакомую AdminLTE. Но на бэке всё осталось как в доке по старой, используемой мною 2 года назад версии.

Кроме всего, экран авторизации у меня был с поломанными стилями, т.к. он предполагает наличие стандартных Laravel Bootstrap app.js и app.css, которые уже давно могли быть удалены на существующих проектах (как у меня). Поэтому в плане прикручивания данной Laravel админки к существующим проектам, она стала даже ещё хуже, чем раньше.

По всем указанным выше причинам я решил не использовать данный генератор в дальнейших проектах. Но опять, повторюсь, что всё это строго субъективно, и моя оценка — не повод отказываться от использования данного Laravel admin generator.

Laravel CRUD Generator от AppzCoder

Рейтинг на Github: 777 звезд

Исходный код:  https://github.com/appzcoder/crud-generator

Официальный сайт:  отсутствует

Простое и удобное решение, которое отлично подойдёт тем, кто устал постоянно создавать руками контроллеры, модели, миграции и шаблоны страниц, которые для большинства сущностей выглядят одинаково.

Данный Laravel admin генератор позволяет сделать всё вышеперечисленное в консольном режиме с помощью команд следующего формата:

php artisan crud:api-controller Api\\PostsController --crud-name=posts --model-name=Post

От вас потребуется только указать значения параметров или путь к JSON-файлу с соответствующим содержимым.

По примеру выше видно, что данный Laravel пакет позволяет генерировать не только модели и контроллеры для действий с БД через UI сайта, но и с доступом через REST API.

Как видите, данный Laravel CRUD генератор отлично подходит для создания любых сущностей, моделей и CRUD контроллеров на их базе без предметной области. Хоть админку блога вы делаете, хоть MarketPlace — использовать его можно везде.

Полная документация с перечнем возможностей доступна здесь — https://github.com/appzcoder/crud-generator/tree/master/doc (поскольку проект не коммерческий, на отдельный сайт автор решил не раскошеливаться).

Помимо рассмотренного генератора админки Laravel у его разработчика есть в наличии также и полноценный визуальный конструктор, доступный в данном репозитории — https://github.com/appzcoder/laravel-admin

Судя по скриншотам, доступным на странице описания пакета на GitHub, выглядит она достаточно простенько и со вкусом. По базовому функционалу и интерфейсу очень похожа на QuickAdmin. В неё также встроен рассмотренный ранее генератор админки.

Так что по сравнению с той же QuickAdmin у неё налицо явное преимущество — генератор можно использовать отдельно, не привязываясь к фронтэнд теме панели.

Однако, после установки меня ждал фейл

Данная админка использует для своей работы Laravel Bootstrap файлы (public/css/app.css и public/js/app.js), которые я на данный момент успешно удалил. Таким образом, использовать данную Laravel admin panel в моём случае, равно как и на любом другом существующем проекте, не получится.

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

Поэтому я решил её даже детально и не рассматривать, а также не рекомендую прикручивать её к готовому коду, впрочем, ваше дело…

Laravel админка: забракованные решения

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

Laraadmin

Рейтинг на Github: 926 звёзд

Исходный код:  https://github.com/dwijitsolutions/laraadmin

Официальный сайт:  http://laraadmin.com/

По всей видимости, очень крутая админка (судя по описанию на официальном сайте и скриншотам) с CRUD генераторами сущностей БД, онлайн редактором кода и другими полезными фичами, но, к сожалению, устаревшая.

В то время, как комменты коммитов репозитория проекта говорят о том, что добавлена поддержка Laravel 5.4 (при том, что активная версия фреймворка на данный момент 5.6), по факту вы не установите данную Laravel admin panel на версию движка старше 5.2, т.к. инсталлятор выдаст вам ошибку об отсутствии файла маршрутизации app/Http/routes.php.

Ну, и помимо данного фейла вы получите ещё много интересных error messages

FrozenNode Laravel-Administrator

Рейтинг на Github: 1954 звезды

Исходный код:  https://github.com/FrozenNode/Laravel-Administrator

Официальный сайт:  http://frozennode.com

Некогда достаточно популярная и одна из самых древних визуальных конструкторов Laravel админок. На GitHub описана процедура установки для Laravel 3 (!!!), который увидел свет в далёком, по меркам IT мира, 2012 году. Судя по скринам, выглядит неплохо и обладает достаточно обширной функциональностью.

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

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

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

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

Данная информация появится совсем скоро в следующей публикации. Поэтому подписывайтесь на обновления сайта на email и на push-уведомления, чтобы быть в числе самых первых читателей.

Также наряду с этой новостью (даже раньше) в официальном репозитории, ссылку на который я размещал в начале статьи, появится соответствующий коммит с установленной админкой.

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

Пишите ваши отзывы в комментариях, а также делитесь своими мыслями и идеями по поводу будущих публикаций, которые будут способствовать моему и вашему профессиональному развитию

Всем удачи и до новых встреч!

rss