Press ESC to close

Cara Membuat CRUD dengan Livewire di Laravel 11

Laravel adalah salah satu framework PHP yang paling populer untuk membuat aplikasi web. Salah satu fitur terbaru dan sangat menarik adalah Livewire, yang memungkinkan kita membuat antarmuka pengguna interaktif tanpa harus menulis JavaScript. Dalam artikel ini, kita akan belajar cara membuat aplikasi CRUD (Create, Read, Update, Delete) menggunakan Livewire di Laravel 11. Kita akan memulai dari instalasi proyek Laravel, hingga implementasi CRUD yang lengkap.

Apa Itu Livewire?

Livewire adalah sebuah library yang memungkinkan kita membangun aplikasi web dinamis dengan menggunakan PHP di backend, tanpa perlu menulis JavaScript secara langsung. Dengan Livewire, kita dapat mengupdate tampilan halaman secara real-time, mengirimkan data antar server dan client, serta menangani berbagai interaksi pengguna secara langsung, semua itu hanya dengan menggunakan PHP dan sedikit HTML.

Persiapan

Sebelum mulai, pastikan kamu sudah menginstal beberapa hal berikut:

  • PHP versi 8.0 atau lebih tinggi.
  • Composer untuk mengelola dependensi.
  • Laravel 11 yang baru dirilis.

Langkah 1: Instalasi Proyek Laravel 11

Pertama, kita akan membuat proyek Laravel 11 baru. Buka terminal (atau command prompt) dan jalankan perintah berikut:

composer create-project --prefer-dist laravel/laravel crud-livewire "11.*"

Setelah perintah ini selesai, Laravel akan menginstal semua dependensi yang dibutuhkan. Sekarang, pindah ke folder proyek kamu:

cd crud-livewire

Langkah 2: Instalasi Livewire

Untuk menggunakan Livewire, kita perlu menginstalnya terlebih dahulu. Jalankan perintah berikut di terminal:

composer require livewire/livewire

Setelah itu, tambahkan Livewire ke dalam file resources/views/welcome.blade.php (atau bisa juga di layout yang kamu gunakan) dengan menambahkan baris berikut di dalam tag <head>:

@livewireStyles

Dan jangan lupa untuk menambahkan @livewireScripts di bagian bawah sebelum tag penutup </body>:

@livewireScripts

Langkah 3: Membuat Model, Migrasi, dan Seeder

Sekarang kita akan membuat model untuk entitas yang akan kita kelola di CRUD ini. Misalnya kita akan membuat aplikasi untuk mengelola artikel. Di terminal, jalankan perintah berikut untuk membuat model dan migrasi:

php artisan make:model Article -m

Perintah ini akan membuat model Article dan file migrasi. Buka file migrasi yang ada di folder database/migrations/ dan tambahkan kolom untuk tabel artikel. Contoh:

public function up()
{
    Schema::create('articles', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->text('content');
        $table->timestamps();
    });
}

Setelah migrasi selesai, jalankan perintah untuk menjalankan migrasi:

php artisan migrate

Jika kamu ingin menambahkan beberapa data awal, kamu bisa membuat seeder. Jalankan perintah berikut untuk membuat seeder:

php artisan make:seeder ArticleSeeder

Kemudian, di dalam file seeder, tambahkan kode berikut:

use App\Models\Article;

public function run()
{
    Article::create([
        'title' => 'Judul Artikel Pertama',
        'content' => 'Ini adalah konten artikel pertama.',
    ]);

    Article::create([
        'title' => 'Judul Artikel Kedua',
        'content' => 'Ini adalah konten artikel kedua.',
    ]);
}

Jalankan seeder untuk menambahkan data:

php artisan db:seed --class=ArticleSeeder

Langkah 4: Membuat Komponen Livewire

Sekarang, kita akan membuat komponen Livewire untuk menangani CRUD. Di terminal, jalankan perintah berikut untuk membuat komponen ArticleCrud:

php artisan make:livewire ArticleCrud

Perintah ini akan menghasilkan dua file:

  • app/Http/Livewire/ArticleCrud.php (logika komponen)
  • resources/views/livewire/article-crud.blade.php (tampilan HTML komponen)

Buka file ArticleCrud.php dan tambahkan kode berikut:

namespace App\Http\Livewire;

use Livewire\Component;
use App\Models\Article;

class ArticleCrud extends Component
{
    public $articles, $title, $content, $article_id;

    public function mount()
    {
        $this->articles = Article::all();
    }

    public function render()
    {
        return view('livewire.article-crud');
    }

    public function store()
    {
        $this->validate([
            'title' => 'required',
            'content' => 'required',
        ]);

        Article::create([
            'title' => $this->title,
            'content' => $this->content,
        ]);

        $this->resetFields();
        $this->mount();  // Refresh list
    }

    public function edit($id)
    {
        $article = Article::find($id);
        $this->article_id = $article->id;
        $this->title = $article->title;
        $this->content = $article->content;
    }

    public function update()
    {
        $this->validate([
            'title' => 'required',
            'content' => 'required',
        ]);

        $article = Article::find($this->article_id);
        $article->update([
            'title' => $this->title,
            'content' => $this->content,
        ]);

        $this->resetFields();
        $this->mount();  // Refresh list
    }

    public function delete($id)
    {
        Article::find($id)->delete();
        $this->mount();  // Refresh list
    }

    public function resetFields()
    {
        $this->title = '';
        $this->content = '';
    }
}

Langkah 5: Membuat Tampilan Komponen

Sekarang, kita akan mengatur tampilan untuk komponen Livewire ini. Buka file resources/views/livewire/article-crud.blade.php dan tambahkan kode berikut:

<div>
    <h2>Artikel CRUD dengan Livewire</h2>

    <div>
        <input type="text" wire:model="title" placeholder="Judul Artikel">
        <textarea wire:model="content" placeholder="Konten Artikel"></textarea>
        <button wire:click="store">Simpan Artikel</button>
    </div>

    <hr>

    <h3>Daftar Artikel</h3>
    <ul>
        @foreach($articles as $article)
            <li>
                <strong>{{ $article->title }}</strong><br>
                {{ $article->content }}<br>
                <button wire:click="edit({{ $article->id }})">Edit</button>
                <button wire:click="delete({{ $article->id }})">Hapus</button>
            </li>
        @endforeach
    </ul>
</div>

Langkah 6: Menambahkan Komponen ke Tampilan Utama

Akhirnya, kita akan menampilkan komponen ini di halaman utama. Buka file resources/views/welcome.blade.php dan tambahkan kode berikut di dalam body:

<livewire:article-crud />

Langkah 7: Menjalankan Aplikasi

Sekarang, jalankan server Laravel dengan perintah berikut:

php artisan serve

Buka browser dan akses aplikasi kamu di http://127.0.0.1:8000. Kamu akan melihat aplikasi CRUD dengan Livewire yang sudah berfungsi!

Kesimpulan

Dengan menggunakan Livewire di Laravel 11, kamu dapat dengan mudah membuat aplikasi CRUD tanpa menulis JavaScript. Proses interaksi pengguna, seperti membuat, membaca, mengedit, dan menghapus data, menjadi lebih sederhana dan efisien. Semoga tutorial ini membantu kamu memahami cara membuat aplikasi CRUD dengan Livewire. Jangan lupa untuk mengeksplorasi lebih banyak fitur Livewire untuk memperkaya aplikasi kamu!

Semoga artikel ini bermanfaat untuk SEO kamu dan mempermudah pemahaman para pembaca tentang cara membangun aplikasi CRUD menggunakan Livewire di Laravel 11!

Leave a Reply

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