Эта статья была рецензирована Верной Анчетой . Спасибо всем рецензентам SitePoint за то, что сделали контент SitePoint как можно лучше!
Сегодня мы говорим о Voyager !
Voyager — это пакет Laravel, который предоставляет полную систему администрирования для фреймворка в форме «приложения-скелета». Voyager имеет 4 основных функции:
-
Media Manager — построенный поверх Intervention Image , он предоставляет полнофункциональный медиа-менеджер, который позволяет нам просматривать, редактировать и удалять изображения из хранилища. Таким образом, мы можем хранить все наши медиа в одном месте, что облегчает доступ и манипулирование ими.
-
Меню Builder — Меню Builder позволяет нам добавлять, редактировать и удалять пункты меню. Это также дает нам возможность создавать новые меню и управлять ими.
-
Менеджер баз данных — позволяет нам получать доступ к нашей базе данных и манипулировать ею непосредственно из панели администратора. Вместо того, чтобы использовать
Schema
Laravel, Voyager предоставляет нам механизм для добавления, удаления и редактирования записей в базе данных. Он также (по спецификации) создаст наши модели при добавлении таблиц в базу данных. -
Хлеб / CRUD строитель — BREAD это просто CRUD для базы данных. Voyager предоставляет механизм для просмотра, чтения, редактирования, добавления и удаления записей и представлений любой таблицы в нашей базе данных.
Давайте внимательнее посмотрим на это.
Установка Voyager
Сначала давайте начнем со свежей установки Laravel. Конечно, мы можем начать с существующего проекта, но для целей этой статьи мы начнем с нового.
Хотя это выходит за рамки этой статьи, рекомендуемый способ начать новый проект Laravel — использовать Composer :
composer create-project laravel/laravel voyager
Это создаст новый проект Laravel под названием voyager
в папке /voyager
. Чтобы обслуживать этот новый проект Laravel, используя встроенный сервер PHP:
php artisan serve
На улучшенной усадьбе порция позаботится о вас с помощью Nginx.
Теперь, когда новая установка Laravel запущена и запущена, мы можем сосредоточиться на установке пакета Voyager Admin.
composer require tcg/voyager
Как мы видим в процессе установки, Voyager извлекает компоненты из некоторых очень известных пакетов PHP, таких как Doctrine ORM для менеджера баз данных или Guzzle and Intervention Image для обработки и манипулирования изображениями PHP. Это показывает нам, что Voyager построен на основе надежных и проверенных компонентов.
Далее, давайте запустим наш любимый редактор кода. Нам нужно отредактировать некоторые файлы, чтобы Voyager был запущен и работал.
Сначала мы открываем файл .env
и добавляем наши учетные данные базы данных, чтобы Voyager мог к нему подключиться.
DB_HOST=localhost DB_DATABASE=database DB_USERNAME=username DB_PASSWORD=password
После этого давайте добавим поставщиков услуг Voyager и Image Intervention в наш массив поставщиков. Этот массив можно найти в файле config/app.php
, и все, что нам нужно сделать, это добавить к нему следующие элементы:
TCG\Voyager\VoyagerServiceProvider::class, Intervention\Image\ImageServiceProvider::class,
Чтобы завершить установку:
php artisan voyager:install
Теперь мы должны увидеть сообщение "Successfully installed Voyager! Enjoy :)"
.
Осталось сделать только одно: заполнить базу данных.
php artisan db:seed
Это заполнит нашу базу данных тестовыми данными, используя начальные классы. Если мы снова обслуживаем нашу установку Laravel, мы должны увидеть параметры login
и register
в правом верхнем углу.
Недавно созданная административная область в /admin
должна выглядеть так:
Довольно великолепно! Команда TCG приложила немало усилий. Чтобы войти и изучить, давайте использовать следующие учетные данные:
email: admin@admin.com password: password
Из этой админ-панели у нас есть доступ ко всем нашим основным функциям. Медиа-менеджер, редактор меню, менеджер баз данных и CRUD / BREAD, все это можно получить из главного меню панели администратора.
У нас также есть доступ к панели инструментов, с помощью которой мы можем добавить Google Analytics, перейдя в Settings
и добавив наш Google Analytics Client ID
в указанное поле.
Если мы проверим Tools -> Database
то увидим, что пункты меню с активированной опцией BREAD (и соответствующим меню, но мы вернемся к этому позже). Мы рассмотрим три основных функции: менеджер баз данных, компоновщик BREAD и компоновщик меню. Давайте посмотрим на них в действии.
Менеджер баз данных
Чтобы создать новый столбец базы данных в Laravel, нам обычно необходимо использовать migrations
и фасад schema
Laravel. Хотя оба они относительно просты в использовании, если сравнить их с использованием Voyager, мы можем легко увидеть, какой метод быстрее.
Давайте представим, что мы хотим создать новую таблицу и добавить несколько столбцов способом Laravel (используя миграции в качестве «контроля версий» нашей базы данных, а затем используя схему для построения схемы нашей базы данных).
Давайте сосредоточимся на создании таблицы Dogs
с несколькими столбцами, чтобы идентифицировать наших любимых питомцев. Сначала давайте начнем со таблицы. Для начала наша таблица будет содержать поле автоинкремента с именем id
.
Schema::create('dogs', function (Blueprint $table) { $table->increments('id'); });
Затем давайте добавим столбцы name
и breed
в нашу таблицу.
Schema::table('dogs', function ($table) { $table->string('name'); $table->string('breed'); });
Наш полный файл миграции будет выглядеть так:
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateDogsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('dogs', function (Blueprint $table) { $table->increments('id'); }); Schema::table('dogs', function ($table) { $table->string('name'); $table->string('breed'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('dogs'); } }
Хотя миграция полезна, использование Voyager делает вещи более простыми и наглядными, благодаря чему даже непрограммист может легко это сделать.
Давайте посмотрим на тот же пример, используя менеджер баз данных Voyager.
В нашей административной области Voyager давайте нажмем кнопку Tools -> Database -> Create New Table
Это говорит само за себя, и должно показаться вам знакомым, если вы когда-либо использовали такой инструмент, как PhpMyAdmin. Давайте заполним поля соответственно и нажмем кнопку « Create New Table
. Обязательно добавьте поля отметок времени, выбрав опцию « Add Timestamp Fields
, так как это будет важно в будущем. После этого давайте проверим список таблиц. Мы можем видеть нашу таблицу dogs
там, с возможностью View
, Edit
, Delete
и Add BREAD to this table
. Если мы нажмем « View
, то увидим, что мы только что создали ту же таблицу, что и выше, без использования кода и в два раза быстрее.
Хлеб Строитель
Ранее мы говорили о функции BREAD. BREAD — это не что иное, как возможность просматривать, читать, редактировать, добавлять и удалять представления и функции из любой таблицы в нашей базе данных. Add BREAD to this table
эту функцию так же просто, как нажать Add BREAD to this table
в любой таблице в нашем списке. Давайте сделаем это на нашем столе с Dogs
.
Как мы видим, нажав на кнопку, у нас теперь есть этот большой конструктор форм. Здесь мы можем найти все варианты нашего ХЛЕБА, от отображаемого имени до видимости. Мы также видим, что Voyager позволяет нам устанавливать тип ввода не только в виде текстовых полей и разных типов блоков, но также в виде изображений и файлов. Таким образом, мы можем легко добавить поля изображений и файлов в нашу базу данных.
Есть также некоторые поля для информации, такие как Slug, Icon (он имеет возможность использовать класс шрифта Voyager для иконок), отображаемое имя и название модели.
После заполнения формы и создания нашего ХЛЕБА, если мы проверим наше меню, мы увидим, что у нас пока нет опции « Dogs
. Вот тут-то и приходит Menu Builder.
Конструктор меню
В Tools -> Menu Builder
у нас есть возможность создать новое меню, отредактировать меню admin
или main
меню. Прямо сейчас мы хотим создать новый пункт меню в нашей панели администратора, чтобы мы могли использовать параметры BREAD, созданные для нашей таблицы Dogs
. Рядом с администратором, давайте Builder
опцию Builder
.
Перетаскивание меню позволяет нам организовать наше меню панели администратора сейчас. В верхней части страницы есть New menu item
.
Будьте осторожны при заполнении этой формы. URL-адрес должен иметь следующую структуру: /admin/slug
, где slug должен быть URL-слагом, используемым при создании BREAD для таблицы. Если они не идентичны, у нас возникнут проблемы с маршрутизацией, которые довольно сложно отладить. После выбора иконки для меню, мы готовы! Наше меню Dogs
создано!
Теперь мы можем перейти в наше меню « Dogs
для просмотра, добавления, редактирования или удаления записей. В настоящее время у нас их нет, так что получайте удовольствие, создавая их.
Примечание. Одна из вещей, которую я обнаружил во время игры с Voyager, заключается в том, что он будет пытаться вставить значения created_at
и updated_at
при попытке вставить значения во вновь созданную таблицу базы данных. Это произойдет, даже если эти поля не были созданы в базе данных. Мне пришлось вернуться и добавить эти поля вручную в таблицу базы данных. Это причина, почему мы должны были добавить эти поля ранее.
Медиа менеджер
Если мы проверим наше меню, мы увидим, что у нас есть опция Media
.
Медиа-менеджер прямо вперед. Это дает нам централизованное место для доступа ко всем статическим файлам в нашем приложении, с возможностью загрузки файлов, создания папок для дальнейшей организации нашего мультимедиа, перемещения файлов, переименования и удаления их. Как мы видим на скриншоте ниже, мы также получаем некоторую информацию о загруженном файле, в том числе миниатюру и общедоступный URL для более легкого доступа.
Все будет удобно храниться в папке storage/app/public
.
Вывод
Voyager — отличный админ-пакет для Laravel. Он очень прост в использовании и чрезвычайно практичен. Voyager также с открытым исходным кодом, совершенствуется каждый день. Почему бы не взглянуть на репозиторий и помочь с написанием лучших документов или исправлением некоторых ошибок? Этот невероятно практичный пакет Laravel наверняка принесет пользу многим пользователям Laravel и заслуживает всяческой помощи, которую мы можем ему оказать.
Вы дали ему попробовать? Какие у вас жалобы? Каковы ваши похвалы? Дайте нам знать об этом в комментариях.