karya solusi digital

Validasi Bersarang di Laravel: Panduan Lengkap

Admin
Admin 31 Aug 2024

Memahami Validasi Bersarang

Validasi bersarang di Laravel memungkinkan kita untuk memvalidasi data yang berada di dalam struktur data yang lebih kompleks, seperti array atau objek. Hal ini sangat berguna ketika kita berhadapan dengan formulir yang berisi data nested atau ketika kita ingin memastikan bahwa data yang kita terima dari API atau sumber data lainnya memiliki struktur yang benar.

Contoh Kasus

Misalkan kita memiliki sebuah formulir untuk membuat postingan blog yang memiliki banyak tag. Data yang dikirimkan oleh formulir akan berbentuk seperti ini:

JSON

{
    "title": "Judul Posting",
    "content": "Isi Posting",
    "tags": [
        "laravel",
        "php",
        "web development"
    ]
}

Di sini, kita perlu memvalidasi tidak hanya title dan content, tetapi juga memastikan bahwa tags adalah sebuah array dan setiap elemen di dalamnya adalah sebuah string.

Cara Melakukan Validasi Bersarang di Laravel

Laravel menyediakan beberapa cara untuk melakukan validasi bersarang:

1. Menggunakan $request->validate()

Cara yang paling sederhana adalah menggunakan metode validate() pada objek request. Untuk memvalidasi array, kita bisa menggunakan notasi titik (dot) untuk menunjuk ke elemen array yang ingin kita validasi.

PHP

public function store(Request $request)
{
    $validatedData = $request->validate([
        'title' => 'required|string',
        'content' => 'required|string',
        'tags.*' => 'required|string',
    ]);

    // Simpan data ke database
}
  • tags.*: Menunjukkan bahwa setiap elemen dalam array tags harus berupa string yang wajib diisi.

2. Menggunakan Form Request

Untuk validasi yang lebih kompleks, kita bisa menggunakan Form Request. Form Request memungkinkan kita untuk memisahkan logika validasi dari controller.

PHP

// PostRequest.php
public function rules()
{
    return [
        'title' => 'required|string',
        'content' => 'required|string',
        'tags.*' => 'required|string',
    ];
}

PHP

// Controller
public function store(PostRequest $request)
{
    // Validasi otomatis dilakukan oleh Form Request
}

3. Menggunakan Rules Custom

Jika kita membutuhkan validasi yang sangat spesifik, kita bisa membuat custom rule.

PHP

// CustomRule.php
use Illuminate\Contracts\Validation\Rule;

class CustomRule implements Rule
{
    public function passes($attribute, $value)
    {
        // Logika validasi custom
        return is_array($value) && count($value) > 2; // Misal, minimal 3 tag
    }

    public function message()
    {
        return 'Minimal 3 tag harus diisi.';
    }
}

PHP

// Controller
public function store(Request $request)
{
    $request->validate([
        'tags' => ['required', new CustomRule],
    ]);
}

Validasi Objek

Untuk memvalidasi objek, kita bisa menggunakan aturan validasi yang sama seperti untuk array. Caranya adalah dengan menunjuk ke properti objek yang ingin kita validasi menggunakan notasi titik.

JSON

{
    "user": {
        "name": "John Doe",
        "email": "[email protected]"
    }
}

PHP

$request->validate([
    'user.name' => 'required|string',
    'user.email' => 'required|email',
]);

Tips Tambahan

  • Gunakan required_with atau required_if: Untuk membuat suatu field wajib diisi jika field lain memiliki nilai tertentu.

  • Gunakan array: Untuk memastikan bahwa suatu field adalah sebuah array.

  • Gunakan in: Untuk memastikan bahwa nilai suatu field ada dalam daftar nilai yang diizinkan.

  • Manfaatkan exists: Untuk memeriksa apakah suatu nilai ada dalam database.

Dengan memahami validasi bersarang di Laravel, Anda dapat membangun aplikasi yang lebih robust dan aman.

Apakah Anda ingin melihat contoh lain atau memiliki pertanyaan lebih lanjut tentang validasi bersarang?