Tutorial Laravel Livewire

Laravel Livewire adalah sebuah framework full-stack untuk Laravel yang memungkinkan pengembangan aplikasi web interaktif tanpa perlu menulis JavaScript secara langsung. Dengan Livewire, pengembang dapat membangun komponen yang bersifat dinamis, seperti form, pagination, filtering, dan fitur lainnya yang biasanya memerlukan JavaScript, hanya dengan menggunakan PHP.

Instalasi

  1. Laravel version 10 or later
  2. PHP version 8.1 or later

Jalankan perintah

composer require livewire/livewire

Pastikan Alpine tidak sudah terpasang  

Jika aplikasi yang Anda gunakan sudah memiliki AlpineJS yang terpasang, Anda perlu menghapusnya agar Livewire dapat berfungsi dengan benar; jika tidak, Alpine akan dimuat dua kali dan Livewire tidak akan berfungsi. Sebagai contoh, jika Anda menginstal starter kit Laravel Breeze "Blade with Alpine", Anda perlu menghapus Alpine dari `resources/js/app.js`.


Membuat komponen livewire

php artisan make:livewire counter

Perintah tersebut akan menghasilkan 2 file yaitu :

app/Livewire/Counter.php

resources/views/livewire/counter.blade.php

Membuat Class

Membuat Class pada file app/Livewire/Counter.php


Membuat View

Membuat view pada file resources/views/livewire/counter.blade.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');
}

}

Memuat route

use App\Livewire\Counter;

Route::get('/counter', Counter::class);

Membuat template layout

php artisan livewire:layout

Perintah tersebut akan menghasilkan file berikut : resources/views/components/layouts/app.blade.php
Edit file menjadi seperti ini :

<!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>

Posting Komentar

Lebih baru Lebih lama