Laravel'de Veri Doğrulama: Kullanışlı ve Güçlü

Yayınlanan: 2023-05-03

Uygulamalarınızdaki verilerin geçerli, doğru olması ve tüm sistem gereksinimlerini karşılaması artık her zamankinden daha önemli. Veri tutarlılığını koruma ve güvenlik açıklarından kaçınma ihtiyacını ele alır.

Laravel, veri doğrulamayı kolay ve sezgisel hale getirir. Bir model görünümü denetleyicisi (MVC) mimarisini takip eder ve yalnızca PHP ve nesne yönelimli programlama (OOP) kavramları hakkında genel bilgi gerektirir. Ayrıca Laravel, gelen verileri doğrulamak için çeşitli yöntemler sunar.

Bu yaklaşımlardan bazılarını ve doğrulama kurallarını veri kümenize nasıl uygulayacağınızı keşfedin.

Laravel'de Veri Doğrulama Kolaylaştırıldı

Laravel, uygulamanızın kullanıcılarının formlar aracılığıyla veri göndermesi için birkaç kullanıma hazır doğrulama kuralı sağlar. Giriş alanlarını gerektiği gibi işaretleyebilir, minimum veya maksimum uzunluk belirleyebilir ve benzersiz (yinelenmeyen) girişler ve geçerli e-posta adresleri gerektirebilirsiniz. Laravel doğrulayıcı, girdinin bu kuralları veya belirttiğiniz diğer kuralları karşılayıp karşılamadığını kontrol eder.

Bu laravel doğrulama kuralları şunları içerir:

  • required — Alan verileri boş veya boş olmamalıdır.
  • array — Alan verileri bir PHP dizisi olmalıdır.
  • bail — Doğrulama kuralı, ilk doğrulama hatasıyla karşılaştıktan sonra yürütmeyi durdurur.
  • email — Alan verileri geçerli bir e-posta adresi olmalıdır.
  • unique — Alan verilerinin veritabanı tablosunda kopyaları olmamalıdır.

Tüm doğrulama yöntemlerinin artıları ve eksileri vardır, ancak bunların çeşitliliği ihtiyaçlarınız için en iyi yaklaşımı seçmenizi sağlar. Seçtiğiniz yönteme bağlı olarak Laravel doğrulaması, manuel veya otomatik hata mesajlarıyla çeşitli şekillerde gerçekleşebilir.

En yaygın yöntem, gelen HTTP istekleri için kullanılan code>validate yöntemidir. Bu yöntem, doğrulama kurallarını yürüterek istek verilerine zincirlenir. Aşağıdaki örnekte görüldüğü gibi her alan için kuralları virgülle ayırabilirsiniz.

 use Illuminate\Http\Request; public function store (Request $request){ $validated = $request->validate([ 'email' => ['required, unique:users, email, bail'], 'name' => ['required'], ]); }

Burada email gerekli bir girdidir, yani boş olamaz. Ek olarak, aynı e-posta adresinin iki kez kaydedilmediğinden emin olarak, users veritabanı tablosunda benzersiz olmalıdır. Son kural, e-posta adresinin de geçerli olması gerektiğini belirtir. Aksi takdirde, doğrulama işlemi durur. Ad alanı zorunludur ancak başka kuralı yoktur.

Herhangi bir Laravel doğrulama kuralı başarısız olursa, otomatik olarak bir yanıt oluşturulur.

Bir veri hatasının tüm sıkı çalışmanızı mahvetmesine izin vermeyin! Verilerinizi doğrulayın ve projenizi güvenli ve sağlam tutun ️ Tweetlemek için tıklayın

Doğrulama Temelleri

Doğrulama yöntemlerini daha iyi anlamak için aşağıdaki örneği inceleyin. Bitiş noktası için bir yol tanımlayacak ve istek verilerini doğrulamak ve işlemek için bir denetleyici oluşturacaksınız.

İlk olarak, kullanıcıların e-postalarını ve şifrelerini saklamasına izin veren basit bir uç nokta oluşturun.

Rotayı tanımlayın

Laravel rotaları, bir web uygulaması için route/web.php dosyasında veya bir API için route/api.php dosyasında tanımlanır. Bu örnek için api.php kullanın:

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

Denetleyiciyi Oluştur

Denetleyiciyi oluşturmak için bu Artisan komutunu çalıştırın:

 php artisan make:controller UserController

Bu komut, app/Http/Controllers dizininde bir UserController.php dosyası oluşturur.

Şimdi, depolamadan önce mağaza uç noktasına giren verileri doğrulamak için bir store yöntemi tanımlayın.

Bu örnek, bu kuralları kullanarak aşağıdaki alanları doğrulayacaktır:

  • e-posta — Benzersiz, geçerli bir e-posta olmalı ve gerekli olmalıdır
  • password — Minimum uzunluğa, parola onayına sahip olmalı ve gerekli olmalıdır
  • yaş — Bir sayı olmalı ve gerekli olmalıdır
 <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { /** * Store new user details. * */ public function store(Request $request){ $validated = $request->validate([ 'email' => 'required|unique:users|email', 'age' => 'required|numeric', 'password' => 'required|min:7|confirmed' ]); // After user data is validated, logic to store the data } }

confirmed kural, kullanıcıların kayıt sırasında parolalarını yeniden girmeleri gibi verilerin doğru olduğunu doğrulamak için belirli bir alanı iki kez zorunlu tutmanıza olanak tanır. Bu kural, verileri parola alanıyla eşleşmesi gereken password_confirmation adlı bir alan gerektirir.

Hata Mesajlarını Görüntüle

Doğrulama kriterleri karşılanırsa, kodunuz normal şekilde çalışmaya devam edecektir. Doğrulama başarısız olursa, bir IlluminateValidationValidationException istisnası atılır ve uygun hata yanıtı döndürülür.

Örnek, JSON biçiminde bir 422 Unprocessable Entity HTTP yanıtı döndüren bir API'ye dayanmaktadır. Web uygulamaları için, hata mesajını görüntülemek için önceki URL'ye yönlendirir ve istek verileri oturuma gönderilir.

Döndürülen hataları görüntülemek için görünümlerinizde $errors değişkenini kullanabilirsiniz:

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

Ayrıca yalnızca ilk hatayı görüntülemeyi veya hepsini görüntülemek için geçiş yapmayı seçebilirsiniz.

 // Fetch all errors $errors->all() // Fetch only the first error $errors->first()

Formları Yeniden Doldur

Formları yeniden doldurmak, kullanıcıları bilgileri yeniden yazmaktan kurtarır, böylece hatayı düzeltmeye odaklanabilirler. Başarısız bir e-posta adresi örneğinde, name alanı için eski değeri çağırarak formun geri kalanını yeniden doldurabilirsiniz.

 $name = $request-> old('name') //Blade helper <input type="text" name="name" value="{{ old('name') }}">

Önceki girdi yoksa bu kural null döndürür.

Gelişmiş Doğrulama

Laravel, form istekleri adı verilen başka bir doğrulama yazma yöntemi sağlar. Bir form isteği, doğrulamaları düzenleyen ve denetleyicinizin dağınıklığını gideren özel bir istek sınıfıdır.

Büyük girdi hacimleri için uygun kendi doğrulama ve yetkilendirme mantığına sahiptirler ve doğrulama kurallarını tanımlamak ve hata mesajlarını özelleştirmek için kullanılabilirler.

Bir form isteği oluşturmak için bu Artisan komutunu çalıştırın:

 php artisan make:request StoreUserRequest

Bu komut , app/Http/Requests dizininde bir StoreUserRequest.php dosyası oluşturur ve iki varsayılan yöntem içerir:

  • rules istek verileri için doğrulama kuralları döndürür.
  • authorize kullanıcının istenen eylemi gerçekleştirme iznine sahip olup olmadığını belirtmek için bir boole değeri döndürür.

Bir form isteği kullanmak için önceki örneği dönüştürün.

 <?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class StoreUserRequest extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { // Add logic to check if the user is authorized to submit this data. return true; } /** * Get the validation rules that apply to the request. * * @return array<string, mixed> */ public function rules() { return [ 'email' => 'required|unique:users|email', 'age' => 'required|numeric', 'password' => 'required|min:7|confirmed' ]; } }

Bu kuralların hata mesajlarını özelleştirmek için FormRequest sınıfındaki mesajlar yöntemini geçersiz kılabilirsiniz.

 /** * Get the error messages for the defined validation rules. * * @return array */ public function messages() { return [ 'email.required' => 'An email address is required', 'email.email' => 'The email address must be valid', 'password.confirmed'=>'Re-type your password as password_confirmation, passwords does not match' ]; }

Not: Veri adı ve doğrulama kuralı, mesaj verisinden önce nokta (.) ile ayrılır.

Özel Doğrulama

Özel doğrulama oluşturmak için validate yerine bir Validator cephesi kullanabilirsiniz. Doğrulayıcı örneği iki argüman içerir: doğrulanacak veriler ve bir doğrulama kuralları dizisi. Bu iki bağımsız değişken, doğrulayıcı cephesinde ::make yöntemine geçirilerek yeni bir doğrulayıcı örneği oluşturulur.

 use Illuminate\Http\Request; public function store (Request $request){ $validator = Validator::make($request->all(),[ 'email' => 'required|unique:users|email', 'age' => 'required|numeric', 'password' => 'required|min:7|confirmed' ]); if ($validator->fails()) { // Return errors or redirect back with errors return $validator->errors(); } // Retrieve the validated input... $validated = $validator->validated(); // Continue logic to store the data }

Otomatik bir doğrudan eklemek istiyorsanız, önceden var olan bir doğrulayıcı örneği üzerinde validate yöntemini yürütebilirsiniz. Doğrulama başarısız olursa, bir XHR isteği, durum kodu olarak 422 Unprocessable Entity ile bir JSON yanıtı üretir veya kullanıcı hemen yeniden yönlendirilir.

 $validator = Validator::make($request->all(),[ 'email' => 'required|unique:users|email', 'password' => 'required|min:7|confirmed' ])->validate();

Ayrıca, messages adı verilen üçüncü bir bağımsız değişkeni Validate::make method ileterek hata mesajlarınızı özelleştirebilirsiniz:

 $validator = Validator::make($request->all(),[ 'email' => 'required|unique:users|email', 'age' => 'required|numeric', 'password' => 'required|min:7|confirmed' ], $messages = [ 'required' => 'The :attribute field is required.', ]);

Not: :attribute doğrulama altındaki alanın adıyla değiştirilir.

Büyük miktarda veriyle çalışmak hızla kontrolden çıkabilir. Laravel doğrulaması ile projenizi (ve akıl sağlığınızı!) koruyun. İşte Tweet için Tıklayın

Özet

Veri doğrulama gerçekleştirmek, veri kümenizi temiz, doğru ve eksiksiz tutmak için çok önemlidir. Veri doğrulama, verilerinizdeki potansiyel olarak projenizi bozabilecek veya başka şekilde etkileyebilecek hataları ortadan kaldırmanıza olanak tanır. Doğrulama, ölçekte ve büyük miktarda veriyle çalışırken giderek daha önemli hale geliyor.

Laravel, uygulamanızdan geçen verilerin bütünlüğünü ve doğruluğunu sağlamak için çok sayıda esnek yaklaşım sağlar. Varsayılan ve özelleştirilebilir yöntemlerle karmaşık doğrulama mantığı elde edebilir, kod tabanınızı iyi yapılandırılmış ve daha kolay yeniden kullanılabilir hale getirebilirsiniz.

Kinsta'nın uygulama barındırma hizmetleriyle Laravel uygulamalarınızı daha hızlı gönderin.