İçeriğe geç

Laravel Validation İşlemleri

Merhaba arkadaşlar,

Bu yazıda Laravel ile doğrulama (validaiton) işlemlerini olabildiğince geniş bir biçimde anlatmaya çalışacağım. Konu başlıklarımız aşağıdaki gibidir.

  1. Genel Request nesnesi üzerinden doğrulama
  2. Özel Request nesnesi üzerinden doğrulama
  3. Validator nesinesi üzerinden doğrulama
  4. Kendi kurallarımızı oluşturma (Custom Rule)
  5. Kendi mesajlarımızı oluşturma (Custom Message)

Öncelikle test yapabilmeniz için hazırlık aşamalarını tamamlayalım. Ben basitçe bir blog sistemi oluşturmayı tercih ettim. İlk önce migration, model, view ve controller dosyalarını oluşturalım.

Migration

Model

View

views/blogs/index.blade.php

views/blogs/create.blade.php

Controller

Gerekli ortamı hazırladıktan sonra asıl odak noktamız olan doğrulama (validation) işlemlerine geçebiliriz.

1. Genel Request Nesnesi Üzerinden Doğrulama

Bu yöntem diğerleri arasında en basit ve hızlı olanıdır. İsterseniz Request $request ile gelen veri üzerinde isterseniz de request() ile gelen veri üzerinde doğrulama yapabilirsiniz. İkisi de aynı şeydir. 

Doğrulama sonucu eğer false olarak dönerse doğrulama altında kalan satırlar çalıştırılmadan işlem yönlendirilerek bir önceki form sayfası açılır. Böylelikle yanlış veriler kaydetmemiş olursunuz.

2. Validator Nesinesi Üzerinden Doğrulama

Bu yöntemle kendimize özel bir Request nesnesi oluşturarak controller içinde doğrulama kodu yazmadan daha temiz bir şekilde request nesnesi üzerinden doğrulama yapabiliriz. Böylelikle controller içinde sadece gerekli kayıt işlemlerini yapmış oluruz.

Bu komutla request nesnesini oluşturuyoruz. Burada yazılı olmayan bir kuralımız var. Request isminin başında hangi işlem için kullanacağınızı yazmanız okunabilirlik açısından çok faydalı olacaktır. Örneğin bir yazıyı güncelleme sırasında kullanacağınız request ismi UpdateBlogPost olursa onun ne amaçla yapıldığını içine girmeden sadece ismini görerek de anlamış oluruz.

Komutu çalıştıralım ve oluşan request dosyasının içeriğini aşağıdaki gibi değiştirelim.

Burada title değerinin benzersiz olması gerektiğini ve en fazla 255 karakter girilebileceğini belirtmiş olduk. Ayrıca hem title hem de content değerleri mutlaka girilmelidir.

Şimdi bunu nasıl kullanacağımıza bakalım. Öncelikle namespace satırı altına use App\Http\Requests\StoreBlogPost; ekliyoruz. Az önceki kodlarımızdan farklı olarak bu kez $request->validate() kısmı yok ve store(Request $request) yerine store(StoreBlogPost $request) yazdık. Böylelikle controller içindeki kodlarımız daha da azaldı ve StoreBlogPost içindeki kodlarımız çalışarak doğrulama işini yapmış oldu.

3. Özel Request Nesnesi Üzerinden Doğrulama

Bu yöntemle Validator sınıfı üzerinden doğrulama işlemi yapmaya çalışacağız. İlk önce namespace altına use Validator; satırını ekliyoruz. Ardından kodumuzu aşağıdaki gibi değiştiriyoruz.

Validator::make(); 3 parametre alıyor. İlk parametre doğrulanacak olan request, ikini paremetre doğrulamada kullanılacak kurallar, üçüncü parametre ise kurallara eğer özel bir kural girdiyseniz onun için gösterilecek mesajdır. Üçüncü parametreye özel bir kural olmasa da değiştirmek istediğiniz bir kuralın mesajını da yazabilirsiniz.

Diğer yöntemlerden farklı olarak bu yöntemde doğrulamanın başarısız olduğu durumda ne yapması gerektiğine siz karar veriyorsunuz. İsterseniz bir hata mesajı ile doğrudan işlemleri durdurabilir, isterseniz de yönlendirme yaparak formda gerekli bilgilendirme mesajını gösterebilirsiniz. 

Örnek olması açısından ve hızlıca deneme yapabilmeniz için makaleyi yazarken kullandığım projeden doğrulama kodlarını silerek bir kopyasını sizinle paylaşıyorum. Veritabanı olarak sqlite kullandım. Herhangi bir ek işlem yapmaya gerek kalmadan projeyi açıktan sonra composer update ve  php artisan migrate komutlarını çalıştırmanız yeterlidir.

Proje Linki

Şimdilik anlatacaklarım bu kadar. Daha sonra kendi kurallarımızı ve mesajlarımızı nasıl oluşturabileceğimizi de örneklerle anlatacağım.

Faydalı olması dileğiyle..

Kategori:LaravelPHP

2 Yorum

  1. Mustafa Mustafa

    Merhaba,
    Çoklu unique validataion’u nasıl yapabiliriz?

    Saatlerdir arıyorum bir sonuç bulamadım.
    Örnek üzerinden derdimi anlatayım. Elimde bir tablo olsun kullanıcılar tablosu, Bu tabloda TC, Email ve Telefon numarası var diyelim.

    Kullanıcı kayıt olurken, eğer bu üçüne de uyan kayıt var ise kaydetmesin istiyorum. Yani diyelim ki

    11111111111, mymail@domain.com, 0555 555 55 55

    bu şekilde bir kayıt var tabloda, biri daha aynı bilgilerle kayıt olmak isterse kayıt olamayacak. Bu bilgilerde biri zaten var diyecek.
    Ama bu bilgilerden birisi farklı ile kayıt olabilecek. Örneğin

    11111111111, mymail@domain.com, 0555 555 55 56

    olarak giriş yapmaya çalışırsa kaydolabilecek.

    Elbette tablom bu şekilde değil. Aradığım işlemi anlatabilmek için bu örneği veriyorum.

    Laravel 9 kullanıyorum.

    Yardımlarınızı rica ederim.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

two + 9 =