Простой пример программирования на Livewire для Laravel
Первая программа на Livewire для Laravel

Начало работы в Laravel c Livewire 3

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

Задумываетесь о том, чтобы поднять свой pet-проект, сайт клиента или настроить окружение для разработки? Уже пора подумать, где арендовать железо.

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



Давайте знакомиться с Livewire!

Чтобы начать знакомство с Livewire, рассмотрим простой компонент "счетчик" и отобразим его в браузере. Этот пример — отличный способ для первого знакомства с Livewire, так как он демонстрирует его "живость" в самой простой форме.

Необходимые условия для запуска Livewire

Перед началом работы убедитесь, что у вас установлено следующее:

  • Laravel версии 10 или более поздней.
  • PHP версии 8.1 или более поздней.

Установка Livewire

Из корневого каталога приложения Laravel выполните следующую команду Composer:

composer require livewire/livewire

Создание компонента в Livewire

Для быстрого создания новых компонентов в Livewire предусмотрена удобная команда Artisan. Выполните следующую команду, чтобы создать новый компонент Counter:

php artisan make:livewire counter

Эта команда создаст два новых файла в этом проекте:

  • app/Livewire/Counter.php
  • resources/views/livewire/counter.blade.php

Написание класса Livewire

Откройте файл app/Livewire/Counter.php и замените его содержимое на следующее:

<?php
 
namespace App\Livewire;
 
use Livewire\Component;
 
class Counter extends Component
{
    public $count = 1;
 
    public function increment()
    {
        $this->count++;
    }
 
    public function decrement()
    {
        $this->count--;
    }
 
    public function render()
    {
        return view('livewire.counter');
    }
}

Краткое пояснение к приведенному выше коду:

  • public $count = 1;
    • Объявляет публичное свойство $count с начальным значением 1.
  • public function increment()
    • Объявляет публичный метод с именем increment(), который при каждом вызове увеличивает значение свойства $count.
    • Подобные публичные методы могут вызываться из браузера различными способами, в том числе и при нажатии пользователем кнопки.
  • public function render()
    • Объявляет метод render(), который возвращает представление Blade.
    • Это представление Blade будет содержать HTML-шаблон нашего компонента.

Написание представления Livewire

Откройте файл resources/views/livewire/counter.blade.php и замените его содержимое на следующее:

<div>
    <h1>{{ $count }}</h1>
 
    <button wire:click="increment">+</button>
 
    <button wire:click="decrement">-</button>
</div>

Этот код будет отображать значение свойства $count и две кнопки, увеличивающие и уменьшающие свойство $count соответственно.

Регистрация маршрута Laravel для компонента Livewire

Откройте файл routes/web.php в вашем приложении Laravel и добавьте следующий код:

use App\Livewire\Counter;
 
Route::get('/counter', Counter::class);

Теперь наш компонент счетчика назначен маршруту /counter, так что при переходе пользователя по адресу /counter в вашем приложении этот компонент будет отображаться в браузере.

Создание макета шаблона Livewire

Прежде чем перейти к странице /counter в браузере, необходимо создать HTML-макет, в котором будет отображаться наш компонент. По умолчанию Livewire автоматически ищет файл макета с именем: resources/views/components/layouts/app.blade.php

Этот файл можно создать, если он еще не существует, выполнив следующую команду:

php artisan livewire:layout

Эта команда создаст файл с именем resources/views/components/layouts/app.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.0">
 
        <title>{{ $title ?? 'Page Title' }}</title>
    </head>
    <body>
        {{ $slot }}
    </body>
</html>

Компонент counter будет выведен на место переменной $slot в приведенном выше шаблоне.

Возможно, вы уже заметили, что Livewire не предоставляет никаких JavaScript или CSS ресурсов. Это связано с тем, что Livewire 3 и выше автоматически подставляет все необходимые ему ресурсы для фронтенда.

Тестируем приложение Livewire

После установки класса и шаблонов наш компонент готов к тестированию!

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

Нажав на одну из кнопок, вы заметите, что счетчик обновляется в режиме реального времени, без перезагрузки страницы. В этом и заключается магия Livewire: динамические фронтенд-приложения, написанные полностью на PHP.

Это только начало того, на что способен Livewire. Продолжайте читать документацию, чтобы увидеть все, что может предложить Livewire.

Перевод с английского официальной документации Livewire 3:
https://livewire.laravel.com/docs/quickstart

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню