0% menganggap dokumen ini bermanfaat (0 suara)
9 tayangan11 halaman

Pemrograman Data

Modul ini membahas tentang validasi request pada Laravel, termasuk konsep, fungsi, dan penerapan aturan validasi untuk berbagai jenis input. Mahasiswa diharapkan dapat menerapkan validasi pada Controller dan Form Request, serta menampilkan pesan error dengan baik di Blade. Praktikum mencakup pembuatan form input pekerjaan, validasi data, dan penanganan error untuk meningkatkan pengalaman pengguna.

Diunggah oleh

dithaaa
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
9 tayangan11 halaman

Pemrograman Data

Modul ini membahas tentang validasi request pada Laravel, termasuk konsep, fungsi, dan penerapan aturan validasi untuk berbagai jenis input. Mahasiswa diharapkan dapat menerapkan validasi pada Controller dan Form Request, serta menampilkan pesan error dengan baik di Blade. Praktikum mencakup pembuatan form input pekerjaan, validasi data, dan penanganan error untuk meningkatkan pengalaman pengguna.

Diunggah oleh

dithaaa
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

MODUL 8

REQUEST VALIDATION
A. Tujuan Praktikum
Setelah mengikuti praktikum ini, mahasiswa diharapkan mampu:
1. Memahami konsep validasi request pada Laravel.
2. Menjelaskan fungsi dan peran validasi dalam mencegah data tidak valid masuk ke
sistem.
3. Menggunakan berbagai aturan validasi Laravel untuk input teks, angka, tanggal, file,
dan tipe data lainnya.
4. Menerapkan validasi pada Controller dan Form Request.
5. Menampilkan error validasi pada Blade dan memberikan feedback input yang lebih
baik kepada pengguna.
6. Mengelola pesan error global maupun error per-input menggunakan directive Blade.
7. Menerapkan best practice validasi pada form aplikasi berbasis Laravel.

B. Alokasi Waktu
Waktu praktikum : 2 x 50 menit.

C. Dasar Teori
1. Apa itu Request Validation?
Request Validation adalah mekanisme pada Laravel untuk memeriksa apakah data yang dikirim
pengguna (form, request API, dsb) valid sesuai aturan yang kita tetapkan. Jika data tidak valid,
Laravel akan otomatis:
• Mengembalikan pengguna ke halaman sebelumnya
• Mengirim error message
• Menghentikan proses penyimpanan atau update data
Validasi adalah hal Wajib dalam sebuah sistem informasi, karena input yang tidak valid dapat
menyebabkan:
• error database
• data rusak
• eksploitasi keamanan
• crash aplikasi
2. Validasi Menggunakan request()->validate()
Cara paling mudah untuk melakukan validasi adalah:
$request->validate([
'nama' => ['required', 'min:3'],
'gaji' => ['required', 'numeric'],
]);

Jika validasi gagal, sistem otomatis:


• Redirect kembali
• Mengirim error ke halaman view
• Mengisi ulang nilai input (old())

3. Menampilkan Error di Blade


Laravel menyediakan directive Blade untuk menampilkan error validasi:
Menampilkan Semua Error
@if ($errors->any())
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif

Contoh:

4. Menampilkan Error Per Input


Contoh untuk input posisi:
<input type="text" name="posisi" class="form-control">

@error('posisi')
<p class="text-xs text-red-500 font-semibold mt-1">{{ $message }}</p>
@enderror

5. Validasi File Input


Laravel menyediakan validasi file seperti:
• image → file harus berupa gambar
• mimes:jpg,jpeg,png → menentukan jenis file
• max:2048 → ukuran maximal dalam KB
Contoh:
'profil' => ['nullable', 'image', 'mimes:jpg,jpeg,png', 'max:2048'],

6. Konsep $guarded pada Model


Pada Laravel, pengisian massal (mass assignment) mengharuskan kita menentukan field mana
yang boleh diisi melalui $fillable. Namun, jika field sangat banyak, kita bisa menggunakan:
protected $guarded = [];

Artinya seluruh field bebas diisi.


Contoh:

Jika ingin melindungi semua field:


protected $guarded = ['*'];

Jika ingin melindungi field tertentu saja:


protected $guarded = ['harga'];

D. Praktikum

Pada praktikum ini kita akan:

1. Membuat form input pekerjaan.


2. Menambahkan validasi menggunakan request()->validate().
3. Menampilkan error validasi pada form.
4. Menambahkan validasi file khusus gambar.
5. Menampilkan error per input.
6. Menambahkan atribut HTML required sebagai double validation.

1. Membuat Validasi di Controller


Buka controller yang menangani penyimpanan data, misalnya:
app/Http/Controllers/[Link]

Tambahkan validasi berikut:

$request->validate([
'posisi' => ['required', 'min:4'],
'salary' => ['required', 'numeric'],
'profil_perusahaan' => ['nullable', 'image', 'mimes:jpg,jpeg,png',
'max:2048'],
]);

2. Menampilkan Error Global di Blade

Pada file form create, contoh:

resources/views/pekerjaan/[Link]

Tambahkan:

Penjelasan:
- $errors->any():
• $errors adalah objek yang berisi daftar pesan kesalahan (error messages) yang
dihasilkan dari proses validasi form.
• any() adalah metode yang digunakan untuk memeriksa apakah ada pesan kesalahan
yang dikumpulkan di dalam objek $errors.
• Jika ada kesalahan (misalnya, karena validasi form gagal), maka $errors->any() akan
mengembalikan true. Jika tidak ada kesalahan, maka mengembalikan false.
• Jadi, @if ($errors->any()) berarti: "Jika ada pesan kesalahan validasi."

- <ul> dan <li>{{ $error }}</li>:


• Jika ada kesalahan, maka kode di dalam blok @if akan dijalankan. Kode ini digunakan
untuk menampilkan pesan kesalahan dalam sebuah daftar unordered (<ul>).

- $errors->all(): Ini adalah metode yang mengembalikan semua pesan kesalahan dalam
bentuk array. Setiap pesan kesalahan disimpan dalam bentuk string.

- @foreach ($errors->all() as $error): Loop ini digunakan untuk iterasi melalui semua pesan
kesalahan yang ada di dalam array. Setiap pesan kesalahan disimpan dalam variabel $error.

- <li>{{ $error }}</li>: Setiap pesan kesalahan yang terdapat dalam $error akan ditampilkan
dalam elemen <li>. Jadi, setiap kesalahan akan ditampilkan sebagai item dalam daftar.

- @endif:
• Ini adalah penutup dari @if yang menandakan bahwa blok @if telah selesai. Jika tidak
ada kesalahan, maka tidak akan ada daftar kesalahan yang ditampilkan.

Alur Kerja:
- Ketika pengguna mengirimkan form, jika ada kesalahan dalam input yang tidak
memenuhi aturan validasi, Laravel akan menyimpan pesan kesalahan tersebut di dalam
objek $errors.
- Setelah itu, pada halaman yang sama, Laravel akan menampilkan pesan-pesan
kesalahan ini menggunakan kode di atas.
- Misalnya, jika pengguna mengirimkan form dengan data yang tidak valid, seperti: posisi
tidak diisi atau terlalu pendek
- Salary tidak diisi.
- Maka Laravel akan mengembalikan form bersama dengan pesan kesalahan yang
ditampilkan di halaman menggunakan script di atas.

Contoh Hasil:
• Jika ada dua kesalahan validasi, misalnya:
• Posisi harus diisi dan minimal 4 karakter.
• Salary harus diisi.
Pesan kesalahan yang ditampilkan bisa terlihat seperti ini dalam HTML:
html

<ul>

<li>The posisi field is required and must be at least 4 characters


long.</li>

<li>The salary field is required.</li>

</ul>

Ketika kita coba jalankan di browser akan muncul peringatan seperti ini:

Selanjutnya menambahkan [Link].

Maka tampilannya akan menjadi seperti ini.


3. Menampilkan Error Per Input

Contoh untuk input posisi:

<input type="text" name="posisi" class="form-control">

@error('posisi')

<p class="text-xs text-red-500 font-semibold mt-1">{{ $message }}</p>

@enderror

Untuk salary:

<input type="number" name="salary" class="form-control">

@error('salary')

<p class="text-xs text-red-500 font-semibold mt-1">{{ $message }}</p>

@enderror

Selanjutnya kita akan menampilkan error nya dibawah input form masing-masing. Maka kita
beri komentar paca script error yang sudah kita buat.
Kemudian kita definisikan error pada masing-masing nama inputnya.

Dan ketika dijalankan di browser, tampilannya akan menjadi seperti ini.


4. Validasi File Input

Tambahkan aturan berikut:

Controller

'profil_perusahaan' => ['nullable', 'image', 'mimes:jpg,jpeg,png', 'max:2048'],

Input di Blade

<input type="file" name="profil_perusahaan" accept="image/*">

@error('profil_perusahaan')
<p class="text-xs text-red-500 mt-1">{{ $message }}</p>
@enderror

5. Double Validation: HTML Required


Menambahkan required HTML pada input form untuk double validation.

Jadi ketika kosong, maka akan memberikan tampilan seperti ini.


6. Form Lengkap
E. Tugas

Validasi File

Tambahkan validasi sehingga:

• file hanya boleh jpg, jpeg, png


• ukuran maksimum 2MB
• file explorer hanya menampilkan gambar

Anda mungkin juga menyukai