Изучите Livewire 3, Volt и Folio, создав проигрыватель подкастов.

Новости

ДомДом / Новости / Изучите Livewire 3, Volt и Folio, создав проигрыватель подкастов.

May 24, 2023

Изучите Livewire 3, Volt и Folio, создав проигрыватель подкастов.

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

Вчера команда Laravel выпустила Laravel Folio — мощный страничный маршрутизатор, предназначенный для упрощения маршрутизации в приложениях Laravel. Сегодня они выпустили Volt — элегантно созданный функциональный API для Livewire, позволяющий логике PHP компонента и шаблонам Blade сосуществовать в одном файле с уменьшенным шаблоном.

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

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

Для начала нам нужно создать новое приложение Laravel и установить Livewire, Volt, Folio и Sushi (чтобы создать фиктивные данные).

Livewire v3, Volt и Folio все еще находятся в стадии бета-тестирования. Они должны быть довольно стабильными, но используйте их на свой страх и риск.

После запроса пакетов нам нужно запустить php artisan volt:install и php artisan folio:install. Это позволит создать некоторые папки и поставщики услуг, необходимые Volt и Folio.

Для фиктивных данных я собираюсь создать модель суши. Sushi — это пакет, написанный Калебом Позио, который позволяет создавать модели Eloquent, запрашивающие данные из массива, записанного непосредственно в файле модели. Это отлично работает, когда вы создаете примеры приложений или имеете данные, которые не нужно менять очень часто.

Создайте модель, затем удалите признак HasFactory и замените его признаком Sushi. В качестве данных для этого примера я добавил подробную информацию о 4 последних эпизодах подкаста Laravel News.

Я не буду вдаваться в подробности того, как все это работает, поскольку это не является целью статьи, и вы, скорее всего, будете использовать настоящую модель Eloquent, если захотите создать свой собственный проигрыватель подкастов.

Нам понадобится файл макета для загрузки Tailwind, добавления логотипа и некоторых базовых стилей. Поскольку Livewire и Alpine теперь автоматически внедряют свои скрипты и стили, нам даже не нужно загружать их в макет! Мы создадим макет как анонимный компонент Blade по адресу resources/views/comComponents/layout.blade.php.

Во-первых, нам нужна страница для отображения всех выпусков подкаста.

Используя Folio, мы можем легко создать новую страницу в каталоге resources/views/pages, и Laravel автоматически создаст маршрут для этой страницы. Мы хотим, чтобы наш маршрут был /episodes, чтобы мы могли запустить php artisan make:folio Episodes/index. Это создаст пустое представление в resources/views/pages/episodes/index.blade.php.

На этой странице мы вставим компонент макета, а затем пройдемся по всем эпизодам подкаста. Volt предоставляет функции пространства имен для большинства функций Livewire. Здесь мы откроем обычные открывающие и закрывающие теги . Внутри них мы воспользуемся вычисляемой функцией для создания переменной $episodes, которая выполняет запрос для получения всех моделей Episode ($episodes = Computed(fn () => Episode::get());). Мы можем получить доступ к вычисленному свойству в шаблоне, используя $this->episodes.

Я также создал переменную $formatDuration, которая представляет собой функцию форматирования свойства period_in_секунды каждого эпизода в читаемый формат. Мы можем вызвать эту функцию в шаблоне, используя $this->formatDuration($episode->duration_in_секунды).

Нам также необходимо обернуть динамическую функциональность страницы в директиву @volt, чтобы зарегистрировать ее как «анонимный компонент Livewire» на странице Folio.

Далее нам нужно добавить немного интерактивности. Я хочу добавить проигрыватель эпизодов, чтобы мы могли слушать эпизоды из списка эпизодов. Это может быть обычный компонент Blade, который мы отображаем в файле макета.

Мы можем создать этот компонент, добавив файл resources/views/comComponents/episode-player.blade.php. Внутри компонента мы добавим элемент

code. We can then convert that to a Livewire property using Volt's state function./p> in an anchor tag./p>