Cara Membuat Validasi Pada Controller Laravel

Dalam konteks bahasa pemrograman, validasi mengacu pada proses memeriksa sintaks dan semantik dari kode yang ditulis dalam bahasa pemrograman tertentu untuk memastikan sesuai dengan aturan dan standar bahasa tersebut. Proses validasi membantu mengidentifikasi kesalahan, potensi bug, dan kepatuhan terhadap “Best Practice Code” sebelum kode dieksekusi atau diterapkan, sehingga mengurangi risiko perilaku yang tidak terduga dan meningkatkan kualitas kode. Di Laravel validasi mengacu pada proses memvalidasi data masukan pengguna untuk memastikan bahwa data tersebut memenuhi aturan dan persyaratan tertentu sebelum diolah oleh aplikasi. Laravel menyediakan sistem validasi yang kuat dan mudah digunakan yang membantu para pengembang mendefinisikan aturan-aturan untuk data masukan dan dengan mudah memeriksa kesalahan.

Cara Membuat Validasi Pada Controller Laravel

Menggunakan Validasi Di Laravel

Laravel menyediakan beberapa pendekatan berbeda untuk memvalidasi data yang masuk kedalam aplikasi. Method yang paling umum digunakan adalah menggunakan metode validate yang tersedia pada semua permintaan HTTP masuk. Namun, kami juga akan membahas tentang pendekatan lainnya dalam pembuatan validasi.

Laravel memiliki berbagai aturan validasi yang dapat diterapkan pada data di aplikasi anda, bahkan memiliki kemampuan untuk mengetahui apakah data yang di aplikasi merupakan data unik di tabel database tertentu. Kali ini kita akan membahas bagaimana cara membuat validasi di laravel.

1. Cara Cepat untuk Membuat Validasi di Laravel

Cara Cepat Dalam Menuliskan Validasi di Laravel

Untuk belajar cara menggunakan menggunakan validasi di laravel, mari kita lihat contoh membuat form validasi dan menampilkan errornya kepada user.

Langkah 1: Membuat Route

Disini asumsikan kalau kita memiliki route yang berada di direktori routes/web.php:

use App\\Http\\Controllers\\UserController;
 
Route::get('/user/create', [UserController::class, 'create']);
Route::post('/user', [UserController::class, 'store']);

Method GET akan menampilkan sebuah form untuk user untuk membuat user baru, dan Method POST akan menambahkan user baru kedalam database.

Langkah 2: Membuat Controller

Kemudian kita akan membuat sebuah controller yang akan menangani permintaan yang diterima oleh routes yang sudah kita buat.

<?php
 
namespace App\\Http\\Controllers;
 
use App\\Http\\Controllers\\Controller;
use Illuminate\\Http\\RedirectResponse;
use Illuminate\\Http\\Request;
use Illuminate\\View\\View;
 
class UserController extends Controller
{
    /**
     * Untuk menampilkan form untuk menambahkan user baru.
     */
    public function create(): View
    {
        return view('user.create');
    }
 
    /**
     * Untuk menangani permintaan menambah data.
     */
    public function store(Request $request): RedirectResponse
    {
        // Validasi dan store dari user controller...
 
        $user = /** ... */
 
        return to_route('user.show', ['user' => $user->id]);
    }
}

Langkah 3: Membuat Validasi

Selanjut, kita sudah bisa mengisi store method yang sudah dibuat dengan logic untuk memvalidasi user baru yang akan ditambahkan. Kita akan menggunakan validate method yang disediakan laravel dari kelas Illuminate\\Http\\Request dan jika validasi berhasil, user baru akan ditambahkan. Namun jika validasi gagal, sebuah exception akan muncul untuk menangani error, dan tampilan error akan dikirimkan kepada user.

Untuk lebih memahami apa yang sudah dijelaskan, kita bisa lihat pada store method ini:

 /**
 * Untuk menangani permintaan menambah data.
 */
 public function store(Request $request): RedirectResponse
 {
     $validatedData = $request->validate([
        'name' => 'required|string|max:255',
        'email' => 'required|email|unique:users|max:255',
        'age' => 'required|integer|min:18',
    ]);

    // Process the validated data
}

Langkah 4: Menampilkan Tampilan Validasi Errors

Kita sudah membuat validasi untuk setiap data, lalu bagaimana cara menampilkannya? Laravel memberikan kita kemudahan dalam menanganinya. Semua errors yang terjadi kita proses validasi akan menjadi sebuah Flash Data yang akan dikirim kepada sesi yang sedang dijalankan. Flash Data ini menjadi sebuah variabel $errors secara otomatis oleh laravel, yang disediakan oleh kelas Illuminate\\View\\Middleware\\ShareErrorsFromSession yang merupakan bagian dari web middleware grup yang disediakan oleh laravel. Ketika middleware diterapkan, variabel $errors akan selalu bisa di akses oleh anda, dan memungkinkan variabel errors selalu bisa digunakan dan didefinisikan.

Pada contoh ini, user yang sudah menambahkan data akan diarahkan ke create method yang ada di controller yang sudah kita buat. Ketika validasi gagal, kita akan menampilkan error tersebut kedalam view:

<!-- /resources/views/user/create.blade.php -->
 
<h1>Create User</h1>
 
@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
 
<!-- Create User Form -->

Langkah 5: Memanggil Pesan Error Pada Atribut Data

Kemudian kita perlu menambahkan variabel $errors kedalam setiap atribut data yang telah divalidasi. Mari kita lihat contohnya bagaimana cara menambahkannya:

<!-- /resources/views/user/create.blade.php -->
 
<label for="title">User Title</label>
 
<input id="name"
    type="text"
    name="name"
    class="@error('name') is-invalid @enderror">
 
@error('name')
    <div class="alert alert-danger">{{ $message }}</div>
@enderror

Dengan variabel $message kita akan dapat menampilkan jika ada validasi yang gagal.

2. Membuat Validasi Menggunakan Form Request

Menuliskan Validasi dengan Form Request di Laravel

Form Requests merupakan sebuah kelas kustom untuk menangani validasi secara lebih spesifik. Jika kita ingin membuat validasi yang bisa dikatakan “Best Practice” kita perlu membuat kelas yang dikhususkan untuk menangani validasi tertentu.

Langkah 1: Membuat Kelas Form Request

Untuk membuat Form Requests kita bisa memakai method Artisan Laravel make:request didalam command line kita:

php artisan make:request StoreUserRequest

Kelas yang sudah dibuat, akan dimasukkan secara otomatis kedalam direktori app/Http/Requests.

Langkah 2: Mendefinisikan Validasi

Kemudian, buka kelas UserControllerStoreRequest.php yang sudah dibuat, anda akan menemukan rules method yang merupakan tempat untuk memasukkan logic validasi untuk data yang diterima.

Asumsikan kita memiliki data name, email, dan password, kemudian validasi yang diberikan adalah sebagai berikut:

namespace App\\Http\\Requests;

use Illuminate\\Foundation\\Http\\FormRequest;

class UserControllerStoreRequest extends FormRequest
{
    public function rules()
    {
        return [
            'name' => 'required|string|max:255',
            'email' => 'required|email|unique:users,email|max:255',
            'password' => 'required|string|min:8|max:255',
        ];
    }
}

Langkah 3: Menggunakan Kelas Form Request pada UserController

Sekarang anda sudah membuat kelas Form Request, kita akan menggunakan validasi yang sudah dibuat didalam UserController's store method. Buka file UserController.php yang ada di direktori app/Http/Controllers.

    public function store(StoreRequest $request): RedirectResponse
    {
        // Permintaan yang masuk sudah divalidasi pada saat ini.
        // Jika data tidak memenuhi aturan yang ditentukan, Laravel akan mengembalikan respons dengan error secara otomatis.

        // Sekarang Anda dapat membuat pengguna baru menggunakan data yang telah divalidasi.
        $user = new User([
            'name' => $request->input('name'),
            'email' => $request->input('email'),
            'password' => bcrypt($request->input('password')),
        ]);

        // Simpan pengguna ke dalam database.
        $user->save();

        // Kembalikan respons yang menunjukkan keberhasilan menambahd data.
        return redirect()->route('nama.rute.anda')->with('success', 'Pengguna berhasil dibuat');;
    }
}

Langkah 4: Menampilkan Validasi Error

Sama seperti sebelumnya, kita akan memberikan validasi pada atribut data yang ada di blade. Dengan begitu user dapat melihat kesalahan dan memperbaikinya. Contohnya kita akan memberikan atribut data name di blade untuk divalidasi:

<input type="text" name="name" class="@error('name') border-red-500 @enderror">
@error('name')
    <div class="text-red-500">{{ $message }}</div>
@enderror

Kesimpulan

Validasi data masukan dari pengguna sangat penting untuk memastikan bahwa data yang diterima sesuai dengan aturan yang telah ditentukan sebelum diproses lebih lanjut. Dengan mengimplementasikan validasi menggunakan Form Request, kita dapat memastikan bahwa data yang masuk ke sistem telah melewati berbagai aturan validasi dan aman untuk digunakan.

Jika ingin belajar lebih banyak mengenai laravel, di BuildWithAngga kita menyediakan Kelas Online bagi anda yang ingin menguasai laravel. Bagi anda yang pemula dan ingin belajar laravel, kita punya Tips untuk belajar laravel bagi pemula. Di BuildWithAngga juga kita punya Kelas yang yang mudah untuk dipahami oleh pemula. Dengan belajar di platform BuildWithAngga anda juga dapat menambah portofolio dan menambah ilmu untuk memulai karir dibidang ini. Karena dari BuildWithAngga, #semuabisabelajar