Membuat formulir dan melakukan validasi data adalah bagian penting dalam pengembangan aplikasi web.
Laravel menyediakan alat yang kuat dan mudah digunakan untuk menangani formulir dan validasi, sehingga pengembang dapat memastikan bahwa data yang diterima dari pengguna adalah valid dan aman.
Artikel ini akan membahas cara membuat formulir di Laravel, melakukan validasi data, serta cara mengambil nilai lama (old value) ketika validasi tidak sesuai.
1. Membuat Formulir di Laravel
Untuk membuat formulir di Laravel, Anda biasanya akan menggunakan Blade, templating engine yang disediakan oleh Laravel. Berikut adalah contoh sederhana untuk membuat formulir pendaftaran pengguna.
Contoh Formulir Pendaftaran
Buat file Blade baru di folder resources/views/, misalnya register.blade.php, dan tambahkan kode berikut:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Pendaftaran Pengguna</title>
</head>
<body>
<h1>Pendaftaran Pengguna</h1>
<form action="{{ route('register') }}" method="POST">
@csrf
<label for="name">Nama:</label>
<input type="text" name="name" id="name" value="{{ old('name') }}">
@error('name')
<div style="color: red;">{{ $message }}</div>
@enderror
<label for="email">Email:</label>
<input type="email" name="email" id="email" value="{{ old('email') }}">
@error('email')
<div style="color: red;">{{ $message }}</div>
@enderror
<label for="password">Password:</label>
<input type="password" name="password" id="password">
@error('password')
<div style="color: red;">{{ $message }}</div>
@enderror
<button type="submit">Daftar</button>
</form>
</body>
</html>
Dalam contoh di atas, kita membuat formulir pendaftaran dengan tiga input: nama, email, dan password. Kita juga menggunakan direktif Blade @csrf untuk menyertakan token CSRF dan @error untuk menampilkan pesan kesalahan jika validasi gagal.
2. Mengatur Rute dan Controller
Setelah membuat formulir, langkah selanjutnya adalah mengatur rute dan controller untuk menangani permintaan pendaftaran.
Mengatur Rute
Buka file routes/web.php dan tambahkan rute untuk menampilkan formulir dan menangani pengiriman data:
use App\Http\Controllers\AuthController;
Route::get('/register', [AuthController::class, 'showRegistrationForm'])->name('register.form');
Route::post('/register', [AuthController::class, 'register'])->name('register');
Membuat Controller
Buat controller baru dengan perintah Artisan:
php artisan make:controller AuthController
Kemudian, buka file app/Http/Controllers/AuthController.php dan tambahkan metode untuk menampilkan formulir dan menangani pendaftaran:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class AuthController extends Controller
{
public function showRegistrationForm()
{
return view('register');
}
public function register(Request $request)
{
// Validasi data
$validator = Validator::make($request->all(), [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:8|confirmed',
]);
if ($validator->fails()) {
return redirect()->route('register.form')
->withErrors($validator)
->withInput();
}
// Simpan pengguna baru ke database
// User::create([...]);
return redirect()->route('register.form')->with('success', 'Pendaftaran berhasil!');
}
}
Dalam metode register, kita menggunakan Validator untuk memvalidasi data yang diterima dari formulir. Jika validasi gagal, kita mengarahkan kembali ke formulir dengan pesan kesalahan dan nilai lama enggunakan withErrors() dan withInput().
3. Validasi Data
Laravel menyediakan berbagai aturan validasi yang dapat Anda gunakan untuk memastikan data yang diterima dari pengguna adalah valid. Beberapa aturan yang umum digunakan antara lain:
- required: Kolom harus diisi.
- string: Kolom harus berupa string.
- email: Kolom harus berupa alamat email yang valid.
- max: Kolom tidak boleh melebihi jumlah karakter tertentu.
- unique: Kolom harus unik di tabel tertentu.
- confirmed: Kolom harus memiliki konfirmasi (misalnya, password dan password_confirmation).
Anda dapat menyesuaikan aturan validasi sesuai dengan kebutuhan aplikasi Anda.
4. Mengambil Nilai Lama (Old Value)
Salah satu fitur berguna dalam Laravel adalah kemampuan untuk mengambil nilai lama (old value) ketika validasi tidak sesuai. Dalam contoh formulir di atas, kita menggunakan fungsi old('name') untuk mengisi kembali nilai input jika validasi gagal.
Ini memungkinkan pengguna untuk tidak perlu mengisi ulang semua data yang telah dimasukkan sebelumnya.
5. Menampilkan Pesan Kesalahan
Pesan kesalahan ditampilkan menggunakan direktif Blade @error. Jika ada kesalahan validasi untuk kolom tertentu, pesan kesalahan akan ditampilkan di bawah input yang bersangkutan. Ini memberikan umpan balik yang jelas kepada pengguna tentang apa yang salah.
Kesimpulan
Membuat formulir dan melakukan validasi data di Laravel sangatlah mudah berkat alat dan fitur yang disediakan. Dengan menggunakan Blade untuk membuat formulir, Validator untuk memvalidasi data, dan kemampuan untuk mengambil nilai lama,
Anda dapat memastikan bahwa aplikasi Anda menerima data yang valid dan memberikan pengalaman pengguna yang baik. Dengan pemahaman ini, Anda dapat mulai membangun formulir yang lebih kompleks dan menangani validasi dengan lebih efektif.