Gameglimmer
  • AI
  • Laravel
  • Produktivitas
  • Database
  • Hosting
  • Website
No Result
View All Result
Gameglimmer
  • AI
  • Laravel
  • Produktivitas
  • Database
  • Hosting
  • Website
No Result
View All Result
Gameglimmer
No Result
View All Result
Home AI

Laravel Livewire Tutorial Bahasa Indonesia: Bangun Interface Interaktif dengan Livewire

Elara Finch by Elara Finch
September 9, 2025
in AI, Database, Laravel, Produktivitas, Tutorial
0
Share on FacebookShare on Twitter

Selamat datang, para developer Indonesia! Ingin membuat interface website yang interaktif tanpa harus terus-terusan menulis JavaScript yang rumit? Kalau begitu, Anda berada di tempat yang tepat! Tutorial ini akan membahas secara mendalam tentang Laravel Livewire, sebuah framework yang memungkinkan Anda membangun interface interaktif menggunakan PHP murni di sisi backend Laravel Anda.

Di artikel ini, kita akan membahas tuntas tentang Livewire, mulai dari pengertian dasar, cara instalasi, hingga contoh implementasi nyata. Kita akan fokus pada penggunaan praktis agar Anda bisa langsung mengaplikasikannya dalam proyek Anda. Siap? Mari kita mulai!

1. Apa Itu Laravel Livewire dan Mengapa Harus Menggunakannya? (Pengantar Livewire)

Laravel Livewire adalah sebuah full-stack framework untuk Laravel yang memungkinkan Anda membuat interface dinamis dengan cara yang jauh lebih sederhana. Bayangkan Anda bisa membuat tombol yang bisa mengubah data di database tanpa harus me-refresh halaman! Itulah kekuatan Livewire.

Keuntungan Menggunakan Livewire:

Related Post

Belajar Web Development Gratis dari Nol: Manfaatkan Sumber Daya Online

December 6, 2025

Framework Web Development Terbaik untuk Pemula: Rekomendasi dari Para Ahli

December 5, 2025

Tutorial Web Development Pemula Bahasa Indonesia: Belajar HTML, CSS, & JavaScript

December 5, 2025

Kursus Web Development Online Bahasa Indonesia: Sertifikasi Resmi untuk Karier Impianmu

December 5, 2025
  • Sederhana: Tulis kode PHP dan HTML di satu tempat (komponen Livewire).
  • Cepat: Mengurangi kebutuhan untuk menulis kode JavaScript yang kompleks.
  • Interaktif: Membuat interface yang responsif dan menarik bagi pengguna.
  • Mudah Dipelajari: Sintaks yang intuitif dan mirip dengan Blade template Laravel.
  • Full-Stack Reactivity: Data di sisi backend (PHP) secara otomatis tercermin di sisi frontend (HTML) dan sebaliknya.
  • Keamanan Laravel: Manfaatkan keamanan dan fitur Laravel lainnya.

Perbedaan dengan AJAX:

Mungkin Anda bertanya, “Kenapa tidak pakai AJAX saja?” AJAX tentu saja bisa digunakan, tetapi seringkali membutuhkan penulisan kode JavaScript yang cukup rumit untuk menangani request, response, dan manipulasi DOM. Livewire menyederhanakan proses ini dengan mengabstraksi banyak kerumitan di balik layar. Anda fokus pada logika bisnis, Livewire yang menangani komunikasi antara backend dan frontend.

Singkatnya, Laravel Livewire adalah solusi yang elegan dan efisien untuk membangun interface web interaktif dengan Laravel.

2. Instalasi dan Konfigurasi Laravel Livewire: Persiapan Awal

Sebelum mulai menggunakan Livewire, kita perlu menginstalnya di proyek Laravel kita. Berikut langkah-langkahnya:

Persyaratan:

  • Laravel minimal versi 7.0 (disarankan versi terbaru)
  • PHP minimal versi 7.2.5

Langkah-langkah Instalasi:

  1. Buka Terminal: Masuk ke direktori proyek Laravel Anda melalui terminal.

  2. Install Livewire: Gunakan Composer untuk menginstall Livewire:

    composer require livewire/livewire
  3. Include Livewire Assets: Tambahkan kode berikut ke dalam layout utama (biasanya resources/views/layouts/app.blade.php) sebelum tag </head>:

    @livewireStyles

    Dan sebelum tag </body>:

    @livewireScripts

    Kode ini akan memuat CSS dan JavaScript yang dibutuhkan Livewire.

  4. Konfigurasi (Opsional): Jika Anda ingin melakukan konfigurasi lebih lanjut (misalnya, mengubah direktori penyimpanan komponen), Anda bisa mem-publish file konfigurasi Livewire:

    php artisan vendor:publish --tag=livewire:config

    File konfigurasi akan terletak di config/livewire.php.

Selesai! Sekarang Laravel Livewire sudah terinstall dan siap digunakan.

3. Membuat Komponen Livewire Pertama: Hello World dengan Livewire

Setelah instalasi selesai, mari kita buat komponen Livewire pertama. Komponen Livewire adalah inti dari framework ini. Komponen ini berisi logika PHP dan template Blade yang akan dirender.

Langkah-langkah Membuat Komponen:

  1. Buat Komponen: Gunakan Artisan command untuk membuat komponen Livewire:

    php artisan make:livewire hello-world

    Perintah ini akan membuat dua file:

    • app/Http/Livewire/HelloWorld.php (kelas komponen)
    • resources/views/livewire/hello-world.blade.php (template Blade)
  2. Edit Kelas Komponen (HelloWorld.php): Buka file app/Http/Livewire/HelloWorld.php dan modifikasi kode seperti berikut:

    <?php
    
    namespace AppHttpLivewire;
    
    use LivewireComponent;
    
    class HelloWorld extends Component
    {
        public $name = 'Guest';
    
        public function render()
        {
            return view('livewire.hello-world');
        }
    }
    • $name: Ini adalah property yang akan kita gunakan untuk menyimpan nama. Secara default, diinisialisasi ke ‘Guest’.
  3. Edit Template Blade (hello-world.blade.php): Buka file resources/views/livewire/hello-world.blade.php dan modifikasi kode seperti berikut:

    <div>
        <h1>Halo, {{ $name }}!</h1>
        <input type="text" wire:model="name" placeholder="Masukkan nama Anda">
    </div>
    • wire:model="name": Ini adalah directive Livewire yang menghubungkan input text ke property $name di kelas komponen. Setiap kali Anda mengetik di input, nilai $name akan otomatis diperbarui dan tampilan akan di-render ulang.
  4. Tampilkan Komponen di View: Buka salah satu view Blade Anda (misalnya, resources/views/welcome.blade.php) dan tambahkan kode berikut untuk menampilkan komponen:

    <div>
        @livewire('hello-world')
    </div>

    Atau, Anda bisa menggunakan syntax tag:

    <livewire:hello-world />
  5. Jalankan Aplikasi: Buka browser Anda dan kunjungi halaman tempat Anda menampilkan komponen. Anda akan melihat tulisan “Halo, Guest!” dan sebuah input text. Coba ketikkan nama Anda di input text, dan Anda akan melihat tulisan “Halo, [Nama Anda]!” berubah secara otomatis.

Selamat! Anda telah berhasil membuat komponen Livewire pertama Anda.

4. Menggunakan Properties, Methods, dan Events di Livewire: Membangun Fungsionalitas

Komponen Livewire memiliki properties, methods, dan events yang bisa digunakan untuk membangun fungsionalitas yang lebih kompleks.

Properties:

Seperti yang kita lihat di contoh sebelumnya, properties digunakan untuk menyimpan data yang akan digunakan di template Blade. Anda bisa membuat properties publik (bisa diakses dari template) atau privat (hanya bisa diakses dari kelas komponen).

Methods:

Methods adalah fungsi-fungsi yang bisa Anda definisikan di kelas komponen. Methods bisa dipanggil dari template Blade menggunakan directives Livewire seperti wire:click, wire:submit, dan lainnya.

Events:

Events memungkinkan komponen Livewire untuk berkomunikasi satu sama lain. Anda bisa men-trigger events dari satu komponen dan menangkapnya di komponen lain.

Contoh Penggunaan Properties dan Methods:

Mari kita buat komponen yang menampilkan counter dan tombol untuk menambah atau mengurangi nilai counter tersebut.

  1. Buat Komponen:

    php artisan make:livewire counter
  2. Edit Kelas Komponen (Counter.php):

    <?php
    
    namespace AppHttpLivewire;
    
    use LivewireComponent;
    
    class Counter extends Component
    {
        public $count = 0;
    
        public function increment()
        {
            $this->count++;
        }
    
        public function decrement()
        {
            $this->count--;
        }
    
        public function render()
        {
            return view('livewire.counter');
        }
    }
    • $count: Property untuk menyimpan nilai counter.
    • increment(): Method untuk menambah nilai counter.
    • decrement(): Method untuk mengurangi nilai counter.
  3. Edit Template Blade (counter.blade.php):

    <div>
        <h1>Counter: {{ $count }}</h1>
        <button wire:click="increment">+</button>
        <button wire:click="decrement">-</button>
    </div>
    • wire:click="increment": Ketika tombol “+” diklik, method increment() akan dipanggil.
    • wire:click="decrement": Ketika tombol “-” diklik, method decrement() akan dipanggil.
  4. Tampilkan Komponen di View: Seperti sebelumnya, tambahkan @livewire('counter') atau <livewire:counter /> ke view Blade Anda.

Sekarang, ketika Anda mengunjungi halaman tersebut, Anda akan melihat counter dan dua tombol. Ketika Anda mengklik tombol “+” atau “-“, nilai counter akan berubah secara otomatis.

Contoh Penggunaan Events:

Anggaplah Anda memiliki dua komponen: ParentComponent dan ChildComponent. Anda ingin men-trigger event dari ChildComponent dan menangkapnya di ParentComponent.

  1. Buat Komponen:

    php artisan make:livewire parent-component
    php artisan make:livewire child-component
  2. Edit Kelas Komponen (ChildComponent.php):

    <?php
    
    namespace AppHttpLivewire;
    
    use LivewireComponent;
    
    class ChildComponent extends Component
    {
        public function triggerEvent()
        {
            $this->emit('eventFromChild', 'Hello from Child Component!');
        }
    
        public function render()
        {
            return view('livewire.child-component');
        }
    }
    • $this->emit('eventFromChild', 'Hello from Child Component!'): Men-trigger event dengan nama eventFromChild dan mengirimkan data 'Hello from Child Component!'.
  3. Edit Template Blade (child-component.blade.php):

    <div>
        <button wire:click="triggerEvent">Trigger Event</button>
    </div>
  4. Edit Kelas Komponen (ParentComponent.php):

    <?php
    
    namespace AppHttpLivewire;
    
    use LivewireComponent;
    
    class ParentComponent extends Component
    {
        public $message = '';
    
        protected $listeners = ['eventFromChild' => 'handleEventFromChild'];
    
        public function handleEventFromChild($message)
        {
            $this->message = $message;
        }
    
        public function render()
        {
            return view('livewire.parent-component');
        }
    }
    • $listeners = ['eventFromChild' => 'handleEventFromChild']: Mendaftarkan listener untuk event eventFromChild. Ketika event ini di-trigger, method handleEventFromChild() akan dipanggil.
    • handleEventFromChild($message): Method untuk menangani event eventFromChild.
  5. Edit Template Blade (parent-component.blade.php):

    <div>
        <h1>Parent Component</h1>
        <p>Message from Child: {{ $message }}</p>
        @livewire('child-component')
    </div>
  6. Tampilkan Komponen di View: Tampilkan <livewire:parent-component /> di view Blade Anda.

Ketika Anda mengunjungi halaman tersebut dan mengklik tombol “Trigger Event” di ChildComponent, Anda akan melihat pesan “Message from Child: Hello from Child Component!” ditampilkan di ParentComponent.

5. Validasi Data dengan Livewire: Menjaga Integritas Data

Validasi data adalah bagian penting dari setiap aplikasi web. Livewire memudahkan validasi data dengan menggunakan fitur validasi yang disediakan oleh Laravel.

Cara Validasi Data:

  1. Gunakan $rules Property: Definisikan aturan validasi di property $rules di kelas komponen.

    <?php
    
    namespace AppHttpLivewire;
    
    use LivewireComponent;
    
    class ContactForm extends Component
    {
        public $name;
        public $email;
        public $message;
    
        protected $rules = [
            'name' => 'required|min:3',
            'email' => 'required|email',
            'message' => 'required|min:10',
        ];
    
        public function submit()
        {
            $this->validate();
    
            // Proses pengiriman data
        }
    
        public function render()
        {
            return view('livewire.contact-form');
        }
    }
  2. Panggil validate() Method: Panggil method validate() di dalam method yang ingin Anda validasi data.

  3. Tampilkan Error: Tampilkan pesan error di template Blade menggunakan directive @error.

    <div>
        <label for="name">Nama:</label>
        <input type="text" id="name" wire:model="name">
        @error('name') <span class="error">{{ $message }}</span> @enderror
    
        <label for="email">Email:</label>
        <input type="email" id="email" wire:model="email">
        @error('email') <span class="error">{{ $message }}</span> @enderror
    
        <label for="message">Pesan:</label>
        <textarea id="message" wire:model="message"></textarea>
        @error('message') <span class="error">{{ $message }}</span> @enderror
    
        <button wire:click="submit">Kirim</button>
    </div>

Contoh Lengkap:

Mari kita buat komponen formulir kontak dengan validasi data.

  1. Buat Komponen:

    php artisan make:livewire contact-form
  2. Edit Kelas Komponen (ContactForm.php):

    <?php
    
    namespace AppHttpLivewire;
    
    use LivewireComponent;
    
    class ContactForm extends Component
    {
        public $name;
        public $email;
        public $message;
    
        protected $rules = [
            'name' => 'required|min:3',
            'email' => 'required|email',
            'message' => 'required|min:10',
        ];
    
        public function submit()
        {
            $this->validate();
    
            // Proses pengiriman data (misalnya, mengirim email)
            session()->flash('message', 'Pesan Anda berhasil dikirim!');
            $this->reset(['name', 'email', 'message']);
        }
    
        public function render()
        {
            return view('livewire.contact-form');
        }
    }
  3. Edit Template Blade (contact-form.blade.php):

    <div>
        @if (session()->has('message'))
            <div class="alert alert-success">
                {{ session('message') }}
            </div>
        @endif
    
        <form wire:submit.prevent="submit">
            <div>
                <label for="name">Nama:</label>
                <input type="text" id="name" wire:model="name">
                @error('name') <span class="text-red-500">{{ $message }}</span> @enderror
            </div>
    
            <div>
                <label for="email">Email:</label>
                <input type="email" id="email" wire:model="email">
                @error('email') <span class="text-red-500">{{ $message }}</span> @enderror
            </div>
    
            <div>
                <label for="message">Pesan:</label>
                <textarea id="message" wire:model="message"></textarea>
                @error('message') <span class="text-red-500">{{ $message }}</span> @enderror
            </div>
    
            <button type="submit">Kirim</button>
        </form>
    </div>
  4. Tampilkan Komponen di View: Tampilkan <livewire:contact-form /> di view Blade Anda.

Sekarang, ketika Anda mengisi formulir dan mengklik tombol “Kirim”, Livewire akan memvalidasi data. Jika ada kesalahan, pesan error akan ditampilkan di bawah input field yang sesuai.

6. Menggunakan Eloquent dengan Livewire: Mengelola Data Database

Livewire berintegrasi dengan baik dengan Eloquent ORM Laravel. Anda bisa dengan mudah mengambil, menyimpan, mengubah, dan menghapus data dari database menggunakan Eloquent di dalam komponen Livewire.

Contoh Penggunaan Eloquent:

Mari kita buat komponen yang menampilkan daftar posts dari database dan memungkinkan kita untuk menghapus posts tersebut.

  1. Buat Model (jika belum ada):

    php artisan make:model Post

    Tambahkan properties yang sesuai ke model Post.

  2. Buat Migration (jika belum ada):

    php artisan make:migration create_posts_table

    Definisikan skema tabel posts di dalam migration.

  3. Jalankan Migration:

    php artisan migrate
  4. Buat Komponen:

    php artisan make:livewire post-list
  5. Edit Kelas Komponen (PostList.php):

    <?php
    
    namespace AppHttpLivewire;
    
    use AppModelsPost;
    use LivewireComponent;
    
    class PostList extends Component
    {
        public $posts;
    
        public function mount()
        {
            $this->posts = Post::all();
        }
    
        public function deletePost($postId)
        {
            $post = Post::find($postId);
            if ($post) {
                $post->delete();
                $this->posts = Post::all(); // Refresh daftar posts
            }
        }
    
        public function render()
        {
            return view('livewire.post-list');
        }
    }
    • $posts: Property untuk menyimpan daftar posts.
    • mount(): Method yang dipanggil saat komponen diinisialisasi. Digunakan untuk mengambil daftar posts dari database.
    • deletePost($postId): Method untuk menghapus post dengan ID tertentu.
  6. Edit Template Blade (post-list.blade.php):

    <div>
        <h1>Daftar Post</h1>
        <ul>
            @foreach ($posts as $post)
                <li>
                    {{ $post->title }} - {{ $post->content }}
                    <button wire:click="deletePost({{ $post->id }})">Hapus</button>
                </li>
            @endforeach
        </ul>
    </div>
  7. Tampilkan Komponen di View: Tampilkan <livewire:post-list /> di view Blade Anda.

Sekarang, Anda akan melihat daftar posts dari database. Setiap post memiliki tombol “Hapus”. Ketika Anda mengklik tombol “Hapus”, post tersebut akan dihapus dari database dan daftar posts akan di-refresh secara otomatis.

7. Pagination dengan Laravel Livewire: Menampilkan Data dalam Halaman

Ketika Anda memiliki data yang banyak, pagination sangat penting untuk membuat tampilan menjadi lebih rapi dan mudah dinavigasi. Laravel Livewire menyediakan kemudahan dalam implementasi pagination.

Langkah-Langkah Implementasi Pagination:

  1. Gunakan WithPagination Trait: Tambahkan WithPagination trait ke kelas komponen Livewire Anda.

    <?php
    
    namespace AppHttpLivewire;
    
    use AppModelsPost;
    use LivewireComponent;
    use LivewireWithPagination;
    
    class PostList extends Component
    {
        use WithPagination;
    
        public function render()
        {
            $posts = Post::paginate(10); // Menampilkan 10 posts per halaman
            return view('livewire.post-list', ['posts' => $posts]);
        }
    }
  2. Render Pagination Links di Template Blade: Gunakan method $posts->links() untuk menampilkan link pagination di template Blade.

    <div>
        <h1>Daftar Post</h1>
        <ul>
            @foreach ($posts as $post)
                <li>
                    {{ $post->title }} - {{ $post->content }}
                </li>
            @endforeach
        </ul>
    
        {{ $posts->links() }}
    </div>

Contoh Lengkap:

Mari kita modifikasi komponen PostList kita untuk menggunakan pagination.

  1. Edit Kelas Komponen (PostList.php):

    <?php
    
    namespace AppHttpLivewire;
    
    use AppModelsPost;
    use LivewireComponent;
    use LivewireWithPagination;
    
    class PostList extends Component
    {
        use WithPagination;
    
        protected $paginationTheme = 'bootstrap'; // Optional: Mengatur tema pagination (default: tailwind)
    
        public function render()
        {
            $posts = Post::paginate(10); // Menampilkan 10 posts per halaman
            return view('livewire.post-list', ['posts' => $posts]);
        }
    }
    • use WithPagination: Menggunakan trait WithPagination.
    • $paginationTheme = 'bootstrap': Secara opsional mengatur tema pagination ke Bootstrap. Jika Anda menggunakan Tailwind CSS, Anda bisa menghapus baris ini.
  2. Edit Template Blade (post-list.blade.php):

    <div>
        <h1>Daftar Post</h1>
        <ul>
            @foreach ($posts as $post)
                <li>
                    {{ $post->title }} - {{ $post->content }}
                </li>
            @endforeach
        </ul>
    
        {{ $posts->links() }}
    </div>

Sekarang, Anda akan melihat daftar posts yang dibagi menjadi beberapa halaman. Link pagination akan ditampilkan di bagian bawah daftar.

8. Loading States dengan Livewire: Memberikan Feedback ke Pengguna

Ketika Anda melakukan operasi yang memakan waktu (misalnya, mengambil data dari API atau database), penting untuk memberikan feedback kepada pengguna agar mereka tahu bahwa aplikasi sedang bekerja. Livewire memudahkan implementasi loading states.

Cara Implementasi Loading States:

  1. Gunakan wire:loading Directive: Gunakan directive wire:loading untuk menampilkan elemen HTML hanya saat komponen sedang melakukan request ke server.

    <div>
        <button wire:click="loadData">Load Data</button>
    
        <div wire:loading>
            Loading...
        </div>
    
        <ul>
            @foreach ($data as $item)
                <li>{{ $item }}</li>
            @endforeach
        </ul>
    </div>
  2. Modifier wire:loading.delay (Opsional): Gunakan modifier .delay untuk menunda tampilan loading state selama beberapa milidetik. Ini berguna untuk menghindari tampilan loading state yang berkedip-kedip saat operasi yang cepat.

    <div wire:loading.delay>
        Loading...
    </div>
  3. Modifier wire:loading.remove (Opsional): Gunakan modifier .remove untuk menghapus elemen HTML saat komponen sedang melakukan request ke server.

    <button wire:click="loadData" wire:loading.remove>Load Data</button>

Contoh Lengkap:

Mari kita buat komponen yang menampilkan daftar data dari API dan menggunakan loading state.

  1. Buat Komponen:

    php artisan make:livewire data-list
  2. Edit Kelas Komponen (DataList.php):

    <?php
    
    namespace AppHttpLivewire;
    
    use LivewireComponent;
    use IlluminateSupportFacadesHttp;
    
    class DataList extends Component
    {
        public $data = [];
        public $isLoading = false;
    
        public function loadData()
        {
            $this->isLoading = true;
    
            // Simulasikan pengambilan data dari API (ganti dengan API Anda yang sebenarnya)
            $response = Http::get('https://jsonplaceholder.typicode.com/todos');
            $this->data = $response->json();
    
            $this->isLoading = false;
        }
    
        public function render()
        {
            return view('livewire.data-list');
        }
    }
  3. Edit Template Blade (data-list.blade.php):

    <div>
        <button wire:click="loadData" @if($isLoading) disabled @endif>
            @if($isLoading) Memuat... @else Load Data @endif
        </button>
    
        <div wire:loading>
            Memuat data dari server...
        </div>
        <div wire:loading.class="opacity-50">
        <ul>
            @foreach ($data as $item)
                <li>{{ $item['title'] }}</li>
            @endforeach
        </ul>
        </div>
    </div>

Sekarang, ketika Anda mengklik tombol “Load Data”, teks “Memuat data dari server…” akan ditampilkan saat komponen sedang melakukan request ke API. Tombol akan di-disable saat data sedang dimuat, dan daftar akan dibuat transparan menggunakan class opacity-50.

9. Tips dan Trik Laravel Livewire: Optimasi dan Praktik Terbaik

Berikut beberapa tips dan trik untuk memaksimalkan penggunaan Laravel Livewire:

  • Gunakan Komponen yang Lebih Kecil: Bagi interface Anda menjadi komponen-komponen yang lebih kecil dan fokus. Ini akan membuat kode Anda lebih mudah dibaca, di-maintain, dan di-reuse.
  • Hindari Komputasi Berat di Template Blade: Hindari melakukan komputasi yang berat di template Blade. Sebaiknya lakukan komputasi di kelas komponen dan kirim data yang sudah diolah ke template.
  • Manfaatkan Caching: Gunakan fitur caching Laravel untuk mengurangi beban database dan meningkatkan performa aplikasi Anda.
  • Perhatikan Keamanan: Pastikan Anda melakukan validasi dan sanitasi data dengan benar untuk mencegah serangan XSS dan SQL injection.
  • Gunakan Tools Debugging: Manfaatkan tools debugging yang disediakan oleh Laravel dan Livewire untuk membantu Anda menemukan dan memperbaiki masalah.
  • Perbarui Livewire Secara Teratur: Pastikan Anda selalu menggunakan versi Livewire yang terbaru untuk mendapatkan fitur terbaru, perbaikan bug, dan peningkatan performa.
  • Pertimbangkan Lazy Loading: Untuk komponen yang berat atau jarang digunakan, pertimbangkan untuk menggunakan lazy loading. Livewire mendukung lazy loading dengan mudah, memungkinkan Anda untuk menunda render komponen hingga diperlukan. Ini dapat meningkatkan performa halaman awal.

10. Studi Kasus: Membangun CRUD Application dengan Livewire (Contoh Aplikasi Nyata)

Untuk mengilustrasikan penggunaan Livewire dalam aplikasi nyata, mari kita bangun aplikasi CRUD sederhana untuk mengelola daftar tugas (todos).

1. Buat Model dan Migration Todo:

php artisan make:model Todo -m

Edit migration untuk menyertakan kolom title (string) dan completed (boolean). Jalankan migration.

2. Buat Komponen TodoList:

php artisan make:livewire todo-list

3. Edit Komponen TodoList.php:

<?php

namespace AppHttpLivewire;

use AppModelsTodo;
use LivewireComponent;

class TodoList extends Component
{
    public $todos;
    public $newTodo;
    public $editingTodoId = null;
    public $editingTodoTitle = '';

    public function mount()
    {
        $this->todos = Todo::all();
    }

    public function addTodo()
    {
        $this->validate(['newTodo' => 'required|min:3']);

        Todo::create(['title' => $this->newTodo]);
        $this->newTodo = '';
        $this->todos = Todo::all(); // Refresh data
    }

    public function deleteTodo($id)
    {
        Todo::destroy($id);
        $this->todos = Todo::all(); // Refresh data
    }

    public function toggleCompleted($id)
    {
        $todo = Todo::find($id);
        $todo->completed = !$todo->completed;
        $todo->save();
        $this->todos = Todo::all(); // Refresh data
    }

    public function editTodo($id)
    {
        $this->editingTodoId = $id;
        $this->editingTodoTitle = Todo::find($id)->title;
    }

    public function updateTodo()
    {
        $this->validate(['editingTodoTitle' => 'required|min:3']);

        $todo = Todo::find($this->editingTodoId);
        $todo->title = $this->editingTodoTitle;
        $todo->save();

        $this->editingTodoId = null;
        $this->editingTodoTitle = '';
        $this->todos = Todo::all(); // Refresh data
    }

    public function cancelEdit()
    {
        $this->editingTodoId = null;
        $this->editingTodoTitle = '';
    }

    public function render()
    {
        return view('livewire.todo-list');
    }
}

4. Edit Template todo-list.blade.php:

<div>
    <h1>Daftar Tugas</h1>

    <form wire:submit.prevent="addTodo">
        <input type="text" wire:model="newTodo" placeholder="Tambahkan tugas baru">
        <button type="submit">Tambah</button>
        @error('newTodo') <span class="text-red-500">{{ $message }}</span> @enderror
    </form>

    <ul>
        @foreach ($todos as $todo)
            <li>
                <input type="checkbox" wire:click="toggleCompleted({{ $todo->id }})" {{ $todo->completed ? 'checked' : '' }}>
                @if ($editingTodoId === $todo->id)
                    <input type="text" wire:model="editingTodoTitle">
                    <button wire:click="updateTodo">Simpan</button>
                    <button wire:click="cancelEdit">Batal</button>
                @else
                    {{ $todo->title }}
                    <button wire:click="editTodo({{ $todo->id }})">Edit</button>
                @endif

                <button wire:click="deleteTodo({{ $todo->id }})">Hapus</button>
            </li>
        @endforeach
    </ul>
</div>

5. Tampilkan Komponen di View:

Tambahkan <livewire:todo-list /> ke view Blade Anda.

Aplikasi ini memungkinkan Anda untuk:

  • Menambahkan tugas baru.
  • Menandai tugas sebagai selesai.
  • Menghapus tugas.
  • Mengedit tugas.

Ini hanyalah contoh sederhana, tetapi menunjukkan bagaimana Livewire dapat digunakan untuk membangun aplikasi CRUD interaktif dengan mudah.

11. Resources dan Komunitas Laravel Livewire: Tempat Belajar dan Bertanya

Untuk terus mengembangkan kemampuan Anda dengan Laravel Livewire, berikut beberapa resources yang bisa Anda manfaatkan:

  • Dokumentasi Resmi Laravel Livewire: https://laravel-livewire.com/
  • Laravel News: https://laravel-news.com/
  • Laracasts: https://laracasts.com/ (banyak video tutorial tentang Livewire)
  • Komunitas Laravel Indonesia: Cari grup dan forum Laravel di media sosial dan platform online. Bertanya dan berbagi pengalaman dengan developer lain.

12. Kesimpulan: Laravel Livewire – Masa Depan Pengembangan Interface Laravel

Laravel Livewire adalah framework yang sangat powerful dan game-changing untuk pengembangan interface web dengan Laravel. Dengan Livewire, Anda bisa membangun interface interaktif dan dinamis tanpa harus menulis kode JavaScript yang rumit.

Tutorial ini telah memberikan Anda pemahaman dasar tentang Livewire, mulai dari instalasi, konsep dasar, hingga contoh implementasi nyata. Sekarang, saatnya Anda bereksperimen dan membangun aplikasi Anda sendiri dengan Livewire.

Selamat mencoba, dan semoga sukses! Jangan ragu untuk bertanya jika Anda memiliki pertanyaan. Sampai jumpa di artikel selanjutnya!

Tags: bahasa indonesiaBelajar LaravelFrameworkInterface InteraktifLaravelLivewirePanduan LivewirephpTutorialWeb Development
Elara Finch

Elara Finch

Related Posts

AI

Belajar Web Development Gratis dari Nol: Manfaatkan Sumber Daya Online

by Jasper Blackwood
December 6, 2025
AI

Framework Web Development Terbaik untuk Pemula: Rekomendasi dari Para Ahli

by Luna Abernathy
December 5, 2025
AI

Tutorial Web Development Pemula Bahasa Indonesia: Belajar HTML, CSS, & JavaScript

by Jasper Blackwood
December 5, 2025
Next Post

Integrasi Laravel dengan Database MySQL: Menghubungkan Aplikasi Laravel dengan Database Anda

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recommended

Hosting Domain Gratis Indonesia: Mulai Online Tanpa Biaya Tambahan

August 22, 2025

Hosting Domain Gratis untuk Pelajar Indonesia: Syarat & Cara Mendapatkan

March 23, 2025

Tools AI untuk Riset Keyword SEO Bahasa Indonesia: Tingkatkan Ranking Website

September 18, 2025

Jasa Web Development Murah Jakarta: Solusi Website Berkualitas Tanpa Mahal

May 28, 2025

Hosting Murah dengan Bandwidth Unlimited untuk Pengguna Indonesia

December 15, 2025

Hosting Murah dengan Panel Kontrol yang Mudah Digunakan

December 15, 2025

Hosting Murah dengan Dukungan PHP Versi Terbaru untuk Website

December 14, 2025

Hosting Murah dengan Kemudahan Migrasi Website dari Hosting Lain

December 14, 2025

Gameglimmer

Our media platform offers reliable news and insightful articles. Stay informed with our comprehensive coverage and in-depth analysis on various topics.
Read more »

Recent Posts

  • Hosting Murah dengan Bandwidth Unlimited untuk Pengguna Indonesia
  • Hosting Murah dengan Panel Kontrol yang Mudah Digunakan
  • Hosting Murah dengan Dukungan PHP Versi Terbaru untuk Website

Categories

  • AI
  • Akuntansi
  • Akurasi
  • Analisis
  • and "Cara Mengintegrasikan Laravel dengan Database MySQL: Panduan Lengkap": Hosting
  • Android
  • Animasi
  • API
  • Aplikasi
  • Authentication
  • Backup
  • Bahasa
  • Bandwidth
  • based on the article title "Cara Menggunakan AI untuk Meningkatkan Produktivitas Kerja: Lebih Cerdas
  • Based on the article title "Cara Mengintegrasikan Laravel dengan Database MySQL: Panduan Lengkap"
  • Based on the provided keywords and article titles
  • Biaya
  • Bisnis
  • Blog
  • Bootstrap
  • Branding
  • Cerdas
  • Chatbot
  • Cloud
  • Coding
  • Community
  • CRM
  • CSS
  • Customer
  • Data
  • Database
  • Deployment
  • Desain
  • Development
  • Digital**
  • Domain
  • Download
  • E-commerce
  • Editing
  • Efektif
  • Efektivitas
  • Efisien
  • Efisiensi
  • Email
  • Error
  • Error generating categories
  • Estimasi
  • Etika
  • Evaluasi
  • Fitur
  • Foto
  • Framework
  • Freelance
  • Garansi
  • Gratis
  • Harga
  • Hasil
  • Hemat
  • Here are 5 categories
  • here are 5 categories: Laravel
  • here are five categories: Branding
  • Here's a categorization based on the article titles and provided keywords: **Development
  • Here's a categorization based on the article titles and provided keywords: **Laravel
  • Here's a categorization based on the article titles and provided keywords: **Online
  • Here's a categorization based on the article titles and provided keywords: **Panduan
  • Here's a categorization based on the article titles and provided keywords: **Pekerjaan
  • Here's a categorization based on the article titles and provided keywords: **Penjualan
  • Here's a categorization based on the article titles and provided keywords: **Server
  • Here's a categorization based on the article titles and provided keywords: **Web Development
  • Here's a categorization based on the article titles and provided keywords: **Website
  • Here's a categorization based on the article titles and provided keywords: CRM
  • Here's a categorization based on the article titles and provided keywords: E-commerce
  • Here's a categorization based on the article titles and provided keywords: Hosting
  • Here's a categorization based on the article titles and provided keywords: Pendidikan
  • Here's a categorization based on the article titles and provided keywords: Website
  • Here's a categorization based on the provided keywords and article titles: **Web Development
  • Here's a possible categorization based on the article titles and provided keywords: Hosting
  • Here's a possible categorization based on the article titles and provided keywords: Laravel
  • Here's a possible categorization based on the article titles and provided keywords: Produktivitas
  • Here's a possible categorization based on the article titles and provided keywords: Website
  • Here's a possible categorization based on the provided keywords and article titles: Hosting
  • Hosting
  • Hukum
  • Ide
  • Implementasi
  • Indonesia
  • Inspirasi
  • Integrasi
  • iOS
  • Jakarta
  • JavaScript
  • Kampanye
  • Karir
  • Keamanan
  • Kecepatan
  • Keperluan
  • Kerja
  • Kesehatan
  • Kolaborasi
  • Konten
  • Kualitas
  • Laravel
  • Layanan
  • Lebih Cepat": AI
  • Library
  • Logo
  • Lokal
  • Machine Learning
  • Manajemen
  • Marketing
  • Mobile
  • Murah
  • MySQL
  • one word per category
  • Online
  • Open Source
  • Optimasi
  • Otentikasi
  • Otomatis
  • Otomatisasi
  • Panduan
  • Pelajar
  • Pelanggan
  • Pelaporan
  • Pelatihan
  • Peluang
  • Pemasaran
  • Pembayaran
  • Pemula
  • Pendidikan
  • Pengembangan
  • Penipuan
  • Penjualan
  • Perbandingan
  • Performance
  • Pertumbuhan
  • PHP
  • Pilihan
  • Portfolio
  • Prima
  • Privasi
  • Productivity
  • Produktifitas
  • Produktivitas
  • Profesional
  • Python
  • Queue
  • Rekomendasi
  • Responsif
  • Retail
  • Review
  • Riset
  • SEO
  • Server
  • Sistem
  • Skalabilitas
  • Software
  • Solusi
  • SSL
  • Startup
  • Strategi
  • Streaming
  • Studi Kasus
  • Sukses
  • Support
  • Tantangan
  • Teknologi
  • Template
  • TensorFlow
  • Terbaik
  • Terpercaya
  • Tips
  • Tools
  • Transfer
  • Transkripsi
  • Tutorial
  • UKM
  • UMKM
  • Unlimited
  • Uptime
  • Video
  • VPS
  • Web Development
  • Website
  • Windows
  • WooCommerce
  • WordPress
  • XAMPP

Resource

  • About us
  • Contact Us
  • Privacy Policy

© 2024 Gameglimmer.

No Result
View All Result
  • AI
  • Laravel
  • Produktivitas
  • Database
  • Hosting
  • Website

© 2024 Gameglimmer.