Eğitim Serisi 30 Jan 2026 4 dk

Laravel Validation İşlemleri: Form Doğrulama ve Hata Yönetimi (Gün 9)

Author
CyberDirtyCat
Full Stack Developer
Laravel Validation İşlemleri: Form Doğrulama ve Hata Yönetimi (Gün 9)

Kapıdaki Fedai

Merhaba dostlar! Ben Uğurcan. LaraFreelancer serimizin 9. günündeyiz.

Dün formumuzu yaptık ama büyük bir risk var: Kullanıcılar hata yapar. E-posta kutusuna telefon numarası yazabilirler, zorunlu alanı boş geçebilirler. Eğer bu verileri kontrol etmeden veritabanına gönderirsek, uygulamamız patlar (SQL Error).

Bugün Laravel'in muhteşem Validation (Doğrulama) sistemini kurarak, sadece bizim kurallarımıza uyan verileri kabul edeceğiz.

Adım 1: Kuralları Belirlemek (Controller)

app/Http/Controllers/ClientController.php dosyasını açın. Dün yazdığımız store metodunu güncelleyeceğiz.

Veriyi kaydetmeden hemen önce validate fonksiyonunu çağırıyoruz:

public function store(Request $request)
{
    // 1. Kapıdaki Fedai: Kimlik Kontrolü
    $validatedData = $request->validate([
        'name'   => 'required|min:3|max:255', // Zorunlu, en az 3 harf
        'email'  => 'required|email|unique:clients', // Zorunlu, mail formatı, clients tablosunda eşsiz
        'phone'  => 'nullable|numeric|digits_between:10,11', // Boş olabilir ama doluysa sayı ve 10-11 hane
        'budget' => 'nullable|numeric|min:0' // Boş olabilir, sayı olmalı, negatif olamaz
    ], [
        // Özel Hata Mesajları (Opsiyonel)
        'name.required' => 'Müşteri adı boş bırakılamaz.',
        'email.unique' => 'Bu e-posta adresi zaten kayıtlı.',
    ]);

    // 2. Eğer buraya geldiyse veriler temizdir. Kaydet.
    Client::create($validatedData);

    return redirect()->route('clients.index');
}

Eğer kurallara uymayan bir veri varsa, Laravel işlemi durdurur ve kullanıcıyı otomatik olarak forma geri gönderir.

Adım 2: Hataları Ekranda Göstermek (Blade)

Kullanıcıyı geri gönderdik ama neden geri döndüğünü bilmiyor. Ona hataları göstermeliyiz.

resources/views/clients/create.blade.php dosyasını açın. Formun en tepesine (veya inputların altına) şu kodları ekleyeceğiz.

Yöntem A: Toplu Hata Listesi (Formun Tepesine)

@if ($errors->any())
    <div class="alert alert-danger">
        <ul class="mb-0">
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

Yöntem B: İnput Altında Tekil Hata (Daha Şık) Her input alanının altına, o alana ait hatayı yazdırabiliriz:

<div class="mb-3">
    <label>Müşteri Adı</label>
    <input type="text" name="name" class="form-control @error('name') is-invalid @enderror" 
           value="{{ old('name') }}"> @error('name')
        <div class="invalid-feedback">{{ $message }}</div>
    @enderror
</div>

Adım 3: old() Fonksiyonunun Gücü

Yukarıdaki kodda value="{{ old('name') }}" kısmını fark ettiniz mi? Bu çok kritiktir. Kullanıcı 10 kutucuk doldurdu, 1 tanesinde hata yaptı. Sayfa yenilendiğinde diğer 9 kutu silinirse kullanıcı çıldırır. old() fonksiyonu, kullanıcının yazdığı doğru verileri kutunun içinde tutar. Kullanıcı dostu yazılım budur.

VS Code İpucu 💡

Kodlarınız uzadıkça parantezlerin yerini karıştırabilirsiniz.

  • VS Code'da "Bracket Pair Colorizer" özelliği artık yerleşik olarak geliyor. Ayarlardan "Editor > Bracket Pair Colorization" seçeneğini açın. Böylece iç içe parantezleriniz ( [ { } ] ) gökkuşağı gibi renklenir, hangisi hangisinin eşi hemen anlarsınız.

Adım 4: Save Point (Git Commit)

Güvenlik önlemlerimizi aldık.

git add .
git commit -m "Gün 9: Validation kuralları eklendi ve hata mesajları gösterildi"
git push

🎯 GÜNÜN GÖREVİ (Challenge)

Hataları yakala kral!

  1. Dün oluşturduğun ProjectController içindeki store metoduna git.
  2. Şu kuralları uygula:
    • title: Zorunlu ve en az 5 karakter.
    • description: Zorunlu ve en az 10 karakter.
    • status: Zorunlu ve sadece 'bekliyor,devam,bitti' değerlerinden biri olabilir (in:bekliyor,devam,bitti).
  3. Form sayfasında hataları göster ve old() fonksiyonunu kullan.
  4. Formu bilerek yanlış doldur (boş bırak), hatayı ekranda gör ve ekran görüntüsünü yorumlara at!


Bu Teknolojiyle Projenizi Uçuralım

Yazıda bahsettiğim yöntemleri projenize entegre etmek ister misiniz? Profesyonel destek alın.

Teklif Al
#Backend Dersleri #laravel validation #Form Güvenliği #Error Handling #Blade Old Input #Veri Doğrulama

Yorumlar (0)

Düşüncelerini Paylaş

Henüz yorum yapılmamış.