Laravel Validation, kullanıcıların gönderdikleri verilerin istenilen formatlarda olmasını sağlar ve kullanıcıların hatalı veri girişi yapmalarını engeller. Laravel, gelişmiş form doğrulama özellikleri sunar ve geliştiricilere form girişlerini kolayca doğrulamak için güçlü bir araç sağlar. Laravel’in sunduğu validation (doğrulama) özellikleri sayesinde kullanıcı girdilerini kolayca kontrol edebilir ve hatasız bir form süreci sağlayabilirsiniz.

Temel Form Doğrulama Kuralları

Laravel, çeşitli temel doğrulama kurallarını destekler. Örneğin, bir alanın zorunlu olup olmadığını, bir alanın minimum veya maksimum uzunluğunu, bir alanın belirli bir formatta olup olmadığını vb. kontrol edebiliriz.

use Illuminate\Http\Request;
use Illuminate\Validation\ValidationException;

public function store(Request $request)
{
    $validatedData = $request->validate([
        'name' => 'required|string|max:255',
        'email' => 'required|email|unique:users|max:255',
        'password' => 'required|string|min:8|confirmed',
    ]);

    // Doğrulama başarılı, verileri veritabanına kaydetme veya başka bir işlem yapma
}

Yukarıdaki kod örneğinde, name, email ve password alanları için doğrulama kuralları belirtilmiştir. Örneğin, name alanı için required (zorunlu), string veri tipinde ve maksimum 255 karakter uzunluğunda olması gerektiği belirtilmiştir.

Özel Doğrulama Kuralları

Laravel, kendi özel doğrulama kurallarınızı da oluşturmanıza izin verir. Kendi doğrulama kurallarınızı oluşturmak için Validator sınıfını genişletebilir veya Rule sınıfını kullanabilirsiniz. Örneğin, aşağıdaki kodda phone_number alanının Türkiye telefon numarası formatına uygun olup olmadığı kontrol ediliyor.

use Illuminate\Validation\Rule;

public function store(Request $request)
{
    $validatedData = $request->validate([
        'name' => 'required|string|max:255',
        'email' => 'required|email|unique:users|max:255',
        'phone_number' => [
            'required',
            'string',
            'max:15',
            Rule::unique('users')->where(function ($query) {
                return $query->where('country', 'TR');
            }),
            function ($attribute, $value, $fail) {
                if (!preg_match('/^\+90\d{10}$/', $value)) {
                    $fail($attribute . ' alanı geçersiz bir telefon numarası formatına sahip.');
                }
        }
    ],
    'password' => 'required|string|min:8|confirmed',
  ]);
}

// Doğrulama başarılı, verileri veritabanına kaydetme veya başka bir işlem yapma

Yukarıdaki kod örneğinde, phone_number alanı için Türkiye telefon numarası formatına uygunluk kontrolü yapılmaktadır. Bunun için Rule sınıfı kullanılmış ve özel bir doğrulama kuralı tanımlanmıştır. Aynı zamanda, preg_match fonksiyonu ile belirli bir regex (düzenli ifade) kullanılarak da doğrulama yapılmaktadır.

Özel Hata Mesajları

Laravel, doğrulama kurallarına uymayan girdiler için otomatik olarak hata mesajları oluşturur. Ancak, isterseniz kendi özel hata mesajlarınızı da belirleyebilirsiniz. Aşağıdaki örnek, email alanı için özel bir hata mesajı tanımlamaktadır.

public function store(Request $request)
{
    $customMessages = [
        'email.required' => 'E-posta adresi zorunludur.',
        'email.email' => 'Geçerli bir e-posta adresi giriniz.',
        'email.unique' => 'Bu e-posta adresi zaten kullanılmaktadır.',
    ];

    $validatedData = $request->validate([
        'name' => 'required|string|max:255',
        'email' => 'required|email|unique:users|max:255',
        'password' => 'required|string|min:8|confirmed',
    ], $customMessages);

    // Doğrulama başarılı, verileri veritabanına kaydetme veya başka bir işlem yapma
}

Yukarıdaki kod örneğinde, $customMessages değişkeni ile özel hata mesajları tanımlanmaktadır. Bu hata mesajları, belirli doğrulama kurallarına uymayan girdiler için kullanılacaktır.

Doğrulama Kurallarını Özelleştirme

Laravel, doğrulama kurallarınızı daha da özelleştirmenizi sağlar. Örneğin, bir alanın doğrulama kurallarını dizi olarak tanımlayabilir, doğrulama kurallarını gruplayabilir veya bazı koşullara bağlı olarak doğrulama kurallarını aktive edebilirsiniz. Aşağıdaki örnek, password alanının karmaşıklık kurallarını aktive edebilir.

public function store(Request $request)
{
    $validatedData = $request->validate([
        'name' => 'required|string|max:255',
        'email' => 'required|email|unique:users|max:255',
        'password' => [
            'required',
            'string',
            'min:8',
            'confirmed',
            function ($attribute, $value, $fail) {
                if (!preg_match('/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za`Za-z\d@$!%*#?&]{8,}$/', $value)) {
                    $fail('Şifreniz en az bir büyük harf, bir küçük harf, bir sayı, bir özel karakter içermeli ve en az 8 karakterden oluşmalıdır.');
                }
            },
        ],
    ]);
}

Yukarıdaki kod örneğinde, password alanı için özel bir doğrulama kuralı tanımlanmıştır. Bu doğrulama kuralı, şifrenin en az bir büyük harf, bir küçük harf, bir sayı ve bir özel karakter içermesini ve en az 8 karakterden oluşmasını kontrol etmektedir. Bu özel doğrulama kuralı, bir fonksiyon kullanarak tanımlanmıştır ve $fail fonksiyonu ile hata mesajı belirlenmiştir.

Kendi Doğrulama Kurallarınızı Oluşturma

Laravel, kendi özel doğrulama kurallarınızı da oluşturmanıza olanak tanır. Bu, karmaşık doğrulama mantıkları gerektiren durumlarda oldukça kullanışlıdır. Özel bir doğrulama kuralı oluşturmak için aşağıdaki adımları izleyebilirsiniz: – app/Rules klasörü altında yeni bir doğrulama kuralı sınıfı oluşturun. Örneğin, PhoneNumberRule adında bir sınıf oluşturabiliriz. – Oluşturduğunuz sınıfın passes ve message metodlarını tanımlayın. passes metodunda doğrulama mantığını, message metodunda ise hata mesajını belirleyebilirsiniz. Aşağıda, PhoneNumberRule adında bir özel doğrulama kuralı sınıfının örnek bir kullanımı yer almaktadır.

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class PhoneNumberRule implements Rule
{
    public function passes($attribute, $value)
    {
        // Doğrulama mantığı burada tanımlanır
        // Örneğin, Türkiye telefon numarası formatına uygunluk kontrolü yapılabilir
        return preg_match('/^(?:\+?9|0)\d{10}$/', $value);
    }

    public function message()
    {
        return ':attribute alanı geçerli bir Türkiye telefon numarası formatında olmalıdır.';
    }
}

// Kullanım

public function store(Request $request)
{
    $validatedData = $request->validate([
        'name' => 'required|string|max:255',
        'email' => 'required|email|unique:users|max:255',
        'phone_number' => ['required', new PhoneNumberRule],
        'password' => 'required|string|min:8|confirmed',
    ]);
 // Doğrulama başarılı, verileri veritabanına kaydetme veya başka bir işlem yapma
}

Yukarıdaki kod örneğinde, `phone_number` alanı için `PhoneNumberRule` adında bir özel doğrulama kuralı kullanılmıştır. Bu doğrulama kuralı, girilen değerin Türkiye telefon numarası formatına uygun olup olmadığını kontrol eder. Eğer uygun değilse, hata mesajı ile birlikte doğrulama başarısız olur.

Özel Doğrulama Kuralına Parametre Gönderme

Laravel, özel doğrulama kurallarına parametre göndermek için de olanak sağlar. Bu sayede, doğrulama kurallarının daha esnek ve dinamik olmasını sağlayabilirsiniz. Parametre göndermek için aşağıdaki adımları izleyebilirsiniz.

Özel doğrulama kuralı sınıfınızdaki __construct metodunu kullanarak parametreleri alabilir ve sınıf içinde kullanabilirsiniz. __construct metoduna parametreleri geçmek için, doğrulama kuralını kullanırken new anahtar kelimesini kullanarak sınıfı oluştururken parametreleri belirleyebilirsiniz. Aşağıda, MaxWordsRule adında bir özel doğrulama kuralı sınıfının örnek bir kullanımını gösteren bir kod örneği bulunmaktadır.

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class MaxWordsRule implements Rule
{
    private $maxWords;

    public function __construct($maxWords)
    {
        $this->maxWords = $maxWords;
    }

    public function passes($attribute, $value)
    {
        // Doğrulama mantığı burada tanımlanır
        // Girilen metnin belirtilen maksimum kelime sayısını aşmamasını kontrol edebiliriz
        $words = str_word_count($value);
        return $words <= $this->maxWords;
    }

    public function message()
    {
        return ':attribute alanı en fazla ' . $this->maxWords . ' kelime içerebilir.';
    }
}

// Kullanım

public function store(Request $request)
{
    $validatedData = $request->validate([
        'title' => 'required|string|max:255',
        'description' => ['required', new MaxWordsRule(10)],
        'price' => 'required|numeric',
    ]);

    // Doğrulama başarılı, verileri veritabanına kaydetme veya başka bir işlem yapma
}

Yukarıdaki kod örneğinde, description alanı için MaxWordsRule adında bir özel doğrulama kuralı kullanılmıştır. Bu doğrulama kuralı, girilen metnin belirtilen maksimum kelime sayısını aşıp aşmadığını kontrol eder. Maksimum kelime sayısı, doğrulama kuralını kullanırken new anahtar kelimesi ile parametre olarak belirtilmiştir.

Laravel, doğrulama işlemlerini kolaylaştırmak için güçlü bir doğrulama mekanizması sağlar. Laravel validation ile, kullanıcıdan alınan verilerin doğru ve güvenilir olduğunu kontrol etmek için esnek ve güçlü bir doğrulama süreci oluşturabilirsiniz. Bu içerikte, Laravel validation konusunda temel kavramları anlattık ve örnek kodlarla kullanımını açıkladık.

Laravel Validation Nedir?

Laravel’de doğrulama kullanarak kullanıcı girdilerinin doğruluğunu kontrol etmek için kullanılan bir mekanizmadır. Kullanıcıdan alınan verilerin uygun formatta olup olmadığını kontrol etmek için kullanılır.
Laravel validation, kod tekrarını azaltır ve güvenilir veri girişi sağlar.

Laravel Validation Nasıl Kullanılır?

Laravel validation, HTTP taleplerini doğrulamak için kullanılabilir.
Controller fonksiyonlarında veya Request sınıflarında kullanılabilir.
validate fonksiyonu, kullanıcı girdilerini doğrulamak için kullanılır.
Doğrulama kuralları, doğrulanması gereken alanlar için belirlenir.

Laravel Validation Kuralları Nelerdir?

Laravel, birçok yerleşik doğrulama kuralı sağlar.
Özel doğrulama kuralları da oluşturulabilir.
Doğrulama kuralları, alanın değerini kontrol etmek için kullanılır.
Örneğin, required, numeric, email gibi yaygın doğrulama kuralları bulunmaktadır.

Laravel validation, güvenilir ve doğru veri girişi sağlamak için güçlü bir araçtır. Laravel’in sunduğu yerleşik doğrulama kuralları ile başlayarak, özel doğrulama kuralları oluşturarak doğrulama sürecini daha da esnek hale getirebilirsiniz. Umarım bu içerik, Laravel validation konusunu anlamanıza yardımcı olmuştur.

Shares:

Bir yanıt yazın

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