Эй, ребята! Я надеюсь, что у вас все хорошо, у меня тоже все хорошо, и вот уже несколько месяцев я изучаю React Js. Несколько дней назад один из моих братьев Биджая написал статью о создании динамического компонента с данными с использованием Laravel и Vue Js. Теперь я хочу сделать ту же реализацию, используя Laravel и React Js. Посмотрим, как пойдет.
TL; DR: шаги по созданию динамической таблицы данных с использованием React и Laravel. В этой статье есть фрагмент кода и некоторые пояснения. А демонстрационное приложение можно найти здесь с инструкциями по установке.
Требования:
1. Laravel 5.5+
2. React Js.
Давайте создадим проект Laravel и установим переменные среды и базу данных, изменим файл миграции пользователей, поскольку мы собираемся создать таблицу данных для записей пользователей.
Запустите миграцию с помощью команды: php artisan migrate
, которая запускает миграцию для проекта, и в нашей базе данных создается таблица новых пользователей.
Модель пользователя уже существует в Laravel, просто обновите заполняемые поля, поскольку мы добавляем поле адреса в таблицу пользователей.
protected $fillable = ['name', 'email', 'password', 'address'];
Мы создадим, добавив маршрут. Итак, внутри routes/api.php
добавьте новый маршрут с запросом на получение:
$this->get('users', 'UsersController@index')->name('users');
Теперь нам нужно создать контроллер, используя commandphp artisan make:controller UserController
в методе индекса, чтобы получать разбитые на страницы записи пользователей и возвращать их в формате JSON. Этот контроллер создается внутри app / Http / Контроллеры вносят следующие изменения.
Здесь мы видим, что класс UsersResource используется там, но мы еще не создали его. Классы ресурсов Laravel позволяют легко и выразительно преобразовывать ваши модели и коллекции моделей в JSON. Так что поторопись! Выполните команду php artisan make:resource UserResource
Этот класс будет создан внутри app / Http / Resources. Добавьте следующий код в метод toArray, который будет возвращать только поля id, name, email, address и created_at пользователей из API.
Наш API списка пользователей завершен, но мы не добавляем никаких данных в таблицу пользователей, так что давайте сделаем это тоже. Чтобы вставить случайные данные пользователей, сейчас мы можем внести изменения в класс database / factory / UserFactory.php. Следующий метод полезен для генерации случайных данных пользователей с помощью библиотеки Faker.
И создайте файл сидера с помощью команды php artisan make:seed UsersTableSeeder
, которая создаст файл UsersTableSeeder.php внутри каталога database / seed. Метод внутреннего запуска добавляет следующее, которое может генерировать 50 случайных пользователей.
factory(App\User::class, 50)->create()
Давайте вставим эти случайные данные 50 пользователей с помощью команды php artisan db:seed
.
Запустите свой проект Laravel в локальной среде и откройте свое приложение в любимом браузере, например
Http: //yourappurl.local/api/users/? Per_page = 2 & column = name & order = desc
Вы можете увидеть следующие результаты:
ОК, круто! API листинга серверной части завершен, теперь перейдем к части интерфейса.
Мы собираемся использовать React Js, поэтому сначала сгенерируйте предустановку реакции в проекте Laravel с помощью команды php artisan preset react
, которая по умолчанию сгенерирует основу для архитектуры запуска реакции. Давайте создадим файл ReactDataTableApp.js в resources / js, который выглядит следующим образом.
Мы используем компонент DataTable в указанном выше компоненте и передаем URL-адрес реквизита и столбцы, чтобы сделать компонент DataTable динамическим. Итак, давайте создадим файл DataTable.js внутри resources / js / components, который выглядит следующим образом.
Я хочу немного объяснить компонент DataTable. В приведенном выше коде вы можете видеть, что мы инициализируем данные сущностей состояний, и метаинформация будет установлена в состоянии после извлечения данных из API извлечения любой сущности. Для получения данных из API мы используем axios, который определен в файле resources / js / bootstrap.js. Список объектов доступен в this.state.entities.data, а метаинформация для разбивки на страницы и вызовов API находится в this.state.entities.meta. Это список записей сущности, выполненный с разбивкой на страницы. Также мы можем сделать отдельный компонент Pagination и использовать его для нескольких таблиц.
Импортируйте компонент ReactDataTableApp в resources / js / app.js и отобразите этот компонент в файле welcome.blade.php, в котором атрибут datatable id определен в разметке.
А в файле welcome.blade.php просто укажите ссылку на файл js и файл css с соответствующим идентификатором примерно так.
Теперь давайте запустим ваше приложение и посмотрим в браузере. Надеюсь, вы не забыли запустить npm i
и npm run dev
. Откройте свое приложение в своем любимом браузере, и вы увидите в нем динамические данные.
Да, это все, что касается этого поста, мы создали динамическую базу данных с использованием Laravel и React Js. Вот репозиторий Github. Если у вас есть какие-либо вопросы или предложения по этому поводу, не стесняйтесь добавлять их в раздел комментариев. Мне всегда нравятся твои ответы. Спасибо! До свидания!