التحقق من صحة البيانات في Laravel: ملائم وقوي

نشرت: 2023-05-03

الآن أكثر من أي وقت مضى ، من الأهمية بمكان أن تكون البيانات الموجودة في تطبيقاتك صحيحة ودقيقة وتفي بجميع متطلبات النظام. إنه يتناول الحاجة إلى الحفاظ على اتساق البيانات وتجنب الثغرات الأمنية.

يجعل Laravel التحقق من صحة البيانات أمرًا سهلاً وبديهيًا. إنه يتبع بنية تحكم عرض النموذج (MVC) ولا يتطلب سوى معرفة عامة بمفاهيم PHP والبرمجة الموجهة للكائنات (OOP). علاوة على ذلك ، يقدم Laravel عدة طرق للتحقق من صحة البيانات الواردة.

استكشف بعض هذه الأساليب وكيفية تطبيق قواعد التحقق على مجموعة البيانات الخاصة بك.

أصبح التحقق من صحة البيانات سهلاً في Laravel

يوفر Laravel العديد من قواعد التحقق الجاهزة للاستخدام عندما يرسل مستخدمو تطبيقك البيانات عبر النماذج. يمكنك وضع علامة على حقول الإدخال كما هو مطلوب ، وتعيين حد أدنى أو أقصى للطول ، وطلب إدخالات فريدة (غير مكررة) وعناوين بريد إلكتروني صالحة. يتحقق مدقق Laravel مما إذا كان الإدخال يتوافق مع هذه القواعد أو أي قواعد أخرى تحددها.

تتضمن قواعد التحقق من صحة Laravel ما يلي:

  • required - يجب ألا تكون بيانات الحقل فارغة أو فارغة.
  • array - يجب أن تكون بيانات الحقل مصفوفة PHP.
  • bail - تتوقف قاعدة التحقق من الصحة عن التنفيذ بعد أن تواجه أول فشل في التحقق من الصحة.
  • email - يجب أن تكون بيانات الحقل عنوان بريد إلكتروني صالحًا.
  • unique - يجب ألا تحتوي بيانات الحقل على تكرارات في جدول قاعدة البيانات.

جميع طرق التحقق من الصحة لها إيجابيات وسلبيات ، لكن تنوعها يمكّنك من اختيار أفضل نهج يلبي احتياجاتك. اعتمادًا على الطريقة التي اخترتها ، يمكن أن يحدث التحقق من صحة Laravel بعدة طرق ، مع رسائل خطأ يدوية أو تلقائية.

الطريقة الأكثر شيوعًا هي التعليمات البرمجية> التحقق من الصحة ، وتستخدم لطلبات HTTP الواردة. هذه الطريقة مرتبطة ببيانات الطلب ، وتنفيذ قواعد التحقق من الصحة. يمكنك فصل القواعد لكل حقل بفاصلات ، كما هو موضح في المثال أدناه.

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

هنا ، email هو إدخال مطلوب ، مما يعني أنه لا يمكن أن يكون فارغًا. بالإضافة إلى ذلك ، يجب أن يكون فريدًا في جدول قاعدة بيانات users ، مما يضمن عدم تسجيل عنوان البريد الإلكتروني نفسه مرتين. تنص القاعدة الأخيرة على أن عنوان البريد الإلكتروني يجب أن يكون صالحًا أيضًا. خلاف ذلك ، تتوقف عملية التحقق من الصحة. حقل الاسم مطلوب ولكن ليس له قواعد أخرى.

إذا فشلت أي قاعدة تحقق من Laravel ، فسيتم إنشاء استجابة تلقائيًا.

لا تدع خطأ بيانات واحد يفسد كل عملك الشاق! تحقق من صحة بياناتك وحافظ على مشروعك آمنًا وسليمًا ️ انقر للتغريد

أساسيات التحقق من الصحة

لفهم طرق التحقق بشكل أفضل ، ضع في اعتبارك المثال التالي. ستقوم بتحديد مسار لنقطة النهاية وإنشاء وحدة تحكم للتحقق من صحة بيانات الطلب ومعالجتها.

أولاً ، أنشئ نقطة نهاية بسيطة تتيح للمستخدمين تخزين رسائل البريد الإلكتروني وكلمات المرور الخاصة بهم.

حدد الطريق

تُعرَّف مسارات Laravel في ملف path / web.php لتطبيق ويب أو مسارات / api.php لواجهة برمجة تطبيقات. في هذا المثال ، استخدم api.php :

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

قم بإنشاء وحدة التحكم

قم بتشغيل هذا الأمر الحرفي لإنشاء وحدة التحكم:

 php artisan make:controller UserController

ينشئ هذا الأمر ملف UserController.php في دليل app / Http / Controllers .

الآن ، حدد طريقة store للتحقق من صحة البيانات التي تدخل نقطة نهاية المتجر قبل تخزينها.

سيقوم هذا المثال بالتحقق من صحة الحقول التالية باستخدام هذه القواعد:

  • البريد الإلكتروني - يجب أن يكون فريدًا وبريدًا إلكترونيًا صالحًا ويجب أن يكون مطلوبًا
  • كلمة المرور - يجب أن يكون لها حد أدنى للطول ، وتأكيد كلمة المرور ، ويجب أن تكون مطلوبة
  • العمر - يجب أن يكون رقمًا ويجب أن يكون مطلوبًا
 <?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 بطلب حقل معين مرتين للتحقق من دقة البيانات ، مثل إعادة المستخدمين إدخال كلمات المرور الخاصة بهم أثناء التسجيل. تتطلب هذه القاعدة حقلاً يسمى password_confirmation ، يجب أن تتطابق بياناته مع حقل كلمة المرور .

عرض رسائل الخطأ

إذا تم استيفاء معايير التحقق ، فسيستمر تشغيل الكود بشكل طبيعي. إذا فشل التحقق من الصحة ، فسيتم طرح استثناء IlluminateValidationValidationException ، ويتم إرجاع استجابة الخطأ المناسبة.

يعتمد المثال على واجهة برمجة التطبيقات (API) ، والتي تُرجع استجابة HTTP 422 Unprocessable Entity في تنسيق JSON. بالنسبة لتطبيقات الويب ، ستتم إعادة التوجيه إلى عنوان URL السابق لعرض رسالة الخطأ ، وستومض بيانات الطلب إلى الجلسة.

يمكنك استخدام المتغير $errors في طرق العرض الخاصة بك لعرض الأخطاء المرتجعة:

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

يمكنك أيضًا اختيار عرض الخطأ الأول فقط أو التكرار لعرضهم جميعًا.

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

إعادة ملء النماذج

تؤدي إعادة ملء النماذج إلى حماية المستخدمين من إعادة كتابة المعلومات حتى يتمكنوا من التركيز على إصلاح الخطأ. في مثال فشل عنوان البريد الإلكتروني ، يمكنك إعادة ملء بقية النموذج عن طريق استدعاء القيمة القديمة لحقل name .

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

ستعيد هذه القاعدة null إذا لم يكن هناك إدخال سابق.

التحقق المتقدم

يوفر Laravel طريقة أخرى لكتابة عمليات التحقق تسمى طلبات النموذج. طلب النموذج هو فئة طلب مخصصة تنظم عمليات التحقق من الصحة وترفض وحدة التحكم الخاصة بك.

لديهم منطقهم الخاص للتحقق والتفويض المناسب لأحجام الإدخال الكبيرة ويمكن استخدامه لتحديد قواعد التحقق من الصحة وتخصيص رسائل الخطأ.

لإنشاء طلب نموذج ، قم بتشغيل هذا الأمر الحرفي:

 php artisan make:request StoreUserRequest

ينشئ هذا الأمر ملف StoreUserRequest.php في دليل app / Http / Orders ويحتوي على طريقتين افتراضيتين:

  • تعيد rules قواعد التحقق من صحة بيانات الطلب.
  • authorize يعيد منطقيًا للإشارة إلى ما إذا كان هذا المستخدم لديه الإذن بتنفيذ الإجراء المطلوب.

تحويل المثال السابق لاستخدام نموذج طلب.

 <?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' ]; } }

لتخصيص رسائل الخطأ لهذه القواعد ، يمكنك تجاوز التابع messages في فئة FormRequest .

 /** * 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' ]; }

ملاحظة: يتم فصل اسم البيانات وقاعدة التحقق من الصحة بنقطة (.) قبل بيانات الرسالة.

التحقق المخصص

لإنشاء تحقق مخصص ، يمكنك استخدام واجهة Validator بدلاً من validate . يحتوي مثيل المدقق على وسيطتين: البيانات التي سيتم التحقق من صحتها ومجموعة من قواعد التحقق من الصحة. يتم تمرير هاتين الوسيطتين إلى الطريقة ::make على الواجهة الساكنة Validator ، مما يؤدي إلى إنشاء نسخة مدقق جديدة.

 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 }

إذا كنت ترغب في إضافة توجيه تلقائي ، يمكنك تنفيذ طريقة validate على مثيل مدقق موجود مسبقًا. إذا فشل التحقق من الصحة ، فإن طلب XHR ينتج استجابة JSON مع 422 Unprocessable Entity كرمز الحالة ، أو سيتم إعادة توجيه المستخدم على الفور.

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

يمكنك أيضًا تخصيص رسائل الخطأ الخاصة بك عن طريق تمرير وسيطة ثالثة تسمى messages to Validate::make method :

 $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.', ]);

ملاحظة: يتم استبدال :attribute باسم الحقل تحت التحقق.

يمكن أن يخرج العمل بكميات كبيرة من البيانات عن السيطرة بسرعة. احم مشروعك (وسلامة عقلك!) من خلال التحقق من صحة Laravel. إليك كيفية النقر للتغريد

ملخص

يعد إجراء التحقق من صحة البيانات أمرًا بالغ الأهمية للحفاظ على مجموعة بياناتك نظيفة وصحيحة وكاملة. يتيح لك التحقق من صحة البيانات التخلص من الأخطاء الموجودة في بياناتك والتي من المحتمل أن تفسد مشروعك أو تؤثر عليه. تزداد أهمية التحقق من الصحة عند العمل على نطاق واسع وكميات كبيرة من البيانات.

يتيح Laravel العديد من الأساليب المرنة لضمان سلامة ودقة البيانات التي تمر عبر تطبيقك. يمكنك تحقيق منطق تحقق معقد باستخدام طرق افتراضية وقابلة للتخصيص ، مما يجعل قاعدة التعليمات البرمجية الخاصة بك منظمة بشكل جيد ويمكن إعادة استخدامها بسهولة.

اشحن تطبيقات Laravel الخاصة بك بشكل أسرع مع خدمات استضافة تطبيقات Kinsta.