• Время чтения ~2 мин
  • 22.08.2023

В этом руководстве вы определите, как загрузить больше данных при прокрутке страницы в приложении laravel с помощью пакета laravel livewire.

Загрузка большего количества или бесконечная прокрутка — это безупречный способ показать продукты, сообщения или данные на веб-сайтах. Исследования показывают, что загрузка данных прокрутки — лучший способ повысить вовлеченность пользователей; Однако нумерация страниц является традиционным способом отображения данных на веб-сайтах.

Этот учебник Laravel Livewire Load More OnScroll поможет вам реализовать загрузку большего количества данных на прокрутку с нуля.

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

Вот шаги к созданию и реализации загрузки дополнительных данных на бесконечной прокрутке в приложении laravel с помощью пакета livewire.

  • Создать проект Laravel
  • Подключение к базе данных
  • Вызов миграции в Laravel
  • Создание тестовых данных
  • Установка пакета Livewire
  • Сборка Laravel Загрузить дополнительный компонент
  • Добавить маршрут в Laravel
  • Настройка представления
  • Тестовое приложение

Создание проекта

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

composer create-project laravel/laravel laravel-load-more-example --prefer-dist

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

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db
DB_USERNAME=root
DB_PASSWORD=

Если вы используете локальный сервер MAMP в macOs; Обязательно добавьте UNIX_SOCKET и DB_SOCKET под учетными данными базы данных в файле .env.

UNIX_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

Вызов миграции в Laravel

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

Итак, перейдите в консоль и выполните следующую команду:Создать тестовые данные Теперь, чтобы протестировать функцию загрузки больше, вам необходимо иметь тестовые данные

php artisan migrate

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

php artisan tinker

User::factory()->count(200)->create()

Установка пакета

LivewireИспользуйте команду composer для установки библиотеки livewire в laravel app:

composer require livewire/livewire

Build Laravel Загрузить больше компонентов Теперь вам нужно сгенерировать livewire загрузить больше компонентов

с помощью следующей команды.

php artisan make:livewire load-more-user-data

В конечном счете, приведенная выше команда проявила два файла по следующему пути:Откройте и обновите приведенный ниже код в app/Http/Livewire/LoadMoreUserData.php файл:Откройте и обновите приведенный ниже код в resources/views/livewire/load-more-user-data.blade.php файл:

app/Http/Livewire/LoadMoreUserData.php
resources/views/livewire/load-more-user-data.blade.php

<?php
namespace App\Http\Livewire;
use Livewire\Component;
use App\Models\User;
class LoadMoreUserData extends Component
{
    public $limitPerPage = 10;
    protected $listeners = [
        'load-more' => 'loadMore'
    ];
   
    public function loadMore()
    {
        $this->limitPerPage = $this->limitPerPage + 6;
    }
    public function render()
    {
        $users = User::latest()->paginate($this->limitPerPage);
        $this->emit('userStore');
        return view('livewire.load-more-user-data', ['users' => $users]);
    }
}

<div>
    <table class="table table-striped">
        <thead>
            <tr>
                <th>#Id</th>
                <th>Name</th>
                <th>Email</th>
            </tr>
        </thead>
        <tbody>
            @foreach($users as $user)
            <tr>
                <td>{{ $user->id }}</td>
                <td>{{ $user->name }}</td>
                <td>{{ $user->email }}</td>
            </tr>
            @endforeach
        </tbody>
    </table>
</div>

Добавить маршрут в Laravel

Затем добавьте маршрут в файл routes/web.php; это будет простой метод GET для загрузки данных пользователей на прокрутку.

<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
*/
Route::get('/load-more-users', function () {
    return view('welcome');
});

Настройка вида

На этом последнем шаге вы должны открыть файл resources/views/welcome.blade.php и добавить следующий код:

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Laravel Livewire Load More Data on Page Scroll Demo</title>
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
        html,
        body {
            height: 100vh;
        }
    </style>
</head>
<body>
    <div class="container mt-4">
        @livewire('load-more-user-data')
    </div>
    @livewireScripts
    <script type="text/javascript">
        window.onscroll = function (ev) {
            if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
                window.livewire.emit('load-more');
            }
        };
    </script>
</body>
</html>

Тестовое приложение Наконец, вам нужно запустить приложение

laravel, поэтому откройте окно терминала и выполните приведенную ниже команду.

php artisan serve

Вот URL-адрес, по которому вы можете протестировать приложение:

http://localhost:8000/load-more-users

Заключение

Руководство по Laravel Livewire Load More OnScroll завершено; В этом уроке мы узнали самый простой способ интеграции On Scroll Loads More в приложение Laravel с помощью библиотеки Livewire.

Я считаю, что вам понравился этот урок, и поделитесь им с другими.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297