HOTLINE

(0275) 2974 127

CHAT WA 24/7
0859-60000-390 (Sales)
0852-8969-9009 (Support)
Blog

Tanpa JavaScript Ribet! Cara Membuat Contact Form Laravel dengan Livewire

Membuat contact form adalah salah satu kebutuhan dasar dalam pengembangan website. Jika Anda menggunakan Laravel, kini Anda bisa membuat form kontak yang dinamis tanpa harus menulis banyak kode JavaScript, yaitu dengan bantuan Laravel Livewire.

Livewire memungkinkan Anda membangun antarmuka interaktif menggunakan Blade dan PHP saja, tanpa perlu menulis JavaScript secara kompleks. Pada artikel ini, kita akan membahas langkah demi langkah cara membuat contact form Laravel menggunakan Livewire, mulai dari instalasi hingga penyimpanan data ke database.

Apa Itu Laravel Livewire?

Laravel Livewire adalah framework full-stack untuk Laravel yang mempermudah pembuatan komponen interaktif tanpa meninggalkan ekosistem Laravel.

Keunggulan Livewire:

  • Tidak perlu banyak JavaScript

  • Validasi real-time

  • Integrasi langsung dengan Blade

  • Cocok untuk form dinamis

Persiapan Awal

Pastikan Anda sudah memiliki:

  • PHP 8+

  • Composer

  • Laravel versi terbaru

  • Database (MySQL atau lainnya)

Jika belum memiliki project Laravel, buat terlebih dahulu: composer create-project laravel/laravel contact-form

Masuk ke folder project: cd contact-form

1. Install Laravel Livewire

Install Livewire menggunakan Composer: composer require livewire/livewire

Setelah instalasi selesai, tambahkan directive Livewire di file layout utama (biasanya resources/views/layouts/app.blade.php).

Tambahkan di dalam tag <head>: @livewireStyles

Tambahkan sebelum </body>: @livewireScripts

2. Buat Migration untuk Contact

Buat migration: php artisan make:migration create_contacts_table

Edit file migration:

public function up()
{
Schema::create('contacts', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email');
$table->string('subject');
$table->text('message');
$table->timestamps();
});
}

Jalankan migration: php artisan migrate

3. Buat Model Contact

php artisan make:model Contact

Edit model app/Models/Contact.php:

protected $fillable = [
'name',
'email',
'subject',
'message',
];

4. Buat Livewire Component

Buat komponen Livewire: php artisan make:livewire ContactForm

Perintah ini akan membuat:

  • app/Http/Livewire/ContactForm.php

  • resources/views/livewire/contact-form.blade.php

5. Edit Logic ContactForm.php 

Buka file: app/Http/Livewire/ContactForm.php

Isi dengan kode berikut:

namespace App\Http\Livewire;

use Livewire\Component;
use App\Models\Contact;

class ContactForm extends Component
{
public $name, $email, $subject, $message;

protected $rules = [
‘name’ => ‘required|min:3’,
’email’ => ‘required|email’,
‘subject’ => ‘required|min:5’,
‘message’ => ‘required|min:10’,
];

public function submit()
{
$this->validate();

Contact::create([
‘name’ => $this->name,
’email’ => $this->email,
‘subject’ => $this->subject,
‘message’ => $this->message,
]);

session()->flash(‘success’, ‘Pesan berhasil dikirim!’);

$this->reset();
}

public function render()
{
return view(‘livewire.contact-form’);
}
}

6. Buat Tampilan Form

Buka file: resources/views/livewire/contact-form.blade.php

Isi dengan kode berikut:

<div>
@if (session()->has('success'))
<div style="color: green;">
{{ session('success') }}
</div>
@endif
<form wire:submit.prevent=”submit”>
<div>
<label>Nama</label>
<input type=”text” wire:model=”name”>
@error(‘name’) <span>{{ $message }}</span> @enderror
</div>

<div>
<label>Email</label>
<input type=”email” wire:model=”email”>
@error(’email’) <span>{{ $message }}</span> @enderror
</div>

<div>
<label>Subjek</label>
<input type=”text” wire:model=”subject”>
@error(‘subject’) <span>{{ $message }}</span> @enderror
</div>

<div>
<label>Pesan</label>
<textarea wire:model=”message”></textarea>
@error(‘message’) <span>{{ $message }}</span> @enderror
</div>

<button type=”submit”>Kirim</button>
</form>
</div>

7. Tampilkan Contact Form di Halaman

Buka file route routes/web.php: Route::get('/contact', function () {
return view('contact');
});

Buat file: resources/views/contact.blade.php

Isi dengan: @extends('layouts.app')

@section(‘content’)
<h1>Contact Us</h1>
@livewire(‘contact-form’)
@endsection

Cara Menjalankan Project

Jalankan server Laravel: php artisan serve

Buka browser: http://127.0.0.1:8000/contact

Sekarang contact form sudah aktif dan dapat menyimpan data ke database tanpa JavaScript tambahan.

Kelebihan Menggunakan Livewire untuk Contact Form

  1. Tidak perlu AJAX manual

  2. Validasi langsung tanpa reload halaman

  3. Struktur kode tetap rapi

  4. Mudah dikembangkan

  5. Terintegrasi penuh dengan Laravel

Tips Pengembangan Lanjutan

Anda bisa menambahkan:

  • Notifikasi email otomatis saat form dikirim

  • Proteksi spam dengan Google reCAPTCHA

  • Styling menggunakan Tailwind atau Bootstrap

  • SweetAlert untuk notifikasi lebih menarik

  • Rate limiting untuk keamanan

Kesimpulan

Membuat contact form Laravel menggunakan Livewire adalah solusi modern dan efisien untuk membangun form interaktif tanpa harus menulis JavaScript secara kompleks. Dengan Livewire, Anda dapat menangani validasi, penyimpanan data, dan interaksi pengguna langsung menggunakan PHP dan Blade.

Metode ini sangat cocok untuk developer Laravel yang ingin membangun aplikasi web dinamis dengan kode yang tetap bersih dan mudah dipelihara.

5/5 - (1 vote)
Fitri Ana

Recent Posts

Apa Itu Marketing Automation? Rahasia Meningkatkan Penjualan Secara Otomatis

Di era digital, bisnis dituntut untuk berinteraksi dengan pelanggan secara cepat, tepat, dan personal. Namun,…

51 minutes ago

Mitos atau Fakta? Nomor Tak Dikenal Bisa Bobol M-Banking

Belakangan ini beredar berbagai informasi di media sosial yang mengklaim bahwa mengangkat telepon dari nomor…

2 hours ago

Omnichannel Marketing: Pengertian, Cara Kerja & Manfaat

Di era digital yang semakin kompetitif, pelanggan tidak lagi berinteraksi dengan sebuah bisnis melalui satu…

3 hours ago

Apa Itu Buyer Persona? Pengertian, Cara Membuat, Manfaat & Contohnya

Di tengah persaingan bisnis yang semakin ketat, memahami pelanggan menjadi salah satu faktor utama dalam…

20 hours ago

Apa Itu HTML5? Pengertian, Fungsi, Cara Kerja, Fitur, Kelebihan & Contohnya

Perkembangan teknologi web telah mengubah cara pengguna mengakses informasi dan berinteraksi dengan aplikasi di internet.…

22 hours ago

Apa Itu Data Catalog? Pengertian, Cara Kerja, Manfaat & Contohnya

Di era digital, organisasi menghasilkan dan mengelola data dalam jumlah yang terus meningkat setiap harinya.…

1 day ago