انتقل إلى محتوى الدرس
الدرس 25
دورة إطار العمل Laravel

التحقق من مدخلات النماذج وعرض الأخطاء وحفظ القيم القديمةValidating Form Inputs Error Directives and Old Input

التحقق من صحة البيانات المرسلة عبر دالة validate وعرض رسائل الخطأ بتوجيه @error واستعادة المدخلات السابقة بدالة old.
أقسام الدرس
6
الأمثلة
6
اللغة
العربية
تاريخ النشر
غير محدد
المشاهدات
0
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

يمكن تجاوز قيود المتصفح بسهولة، لذا يعد التحقق من المدخلات في الخادم خط الدفاع الأساسي لكل طلب وارد في Laravel 12. تستدعي دالة التحقق المدمجة فحص البيانات تلقائياً وتعيد توجيه المستخدم للصفحة السابقة مع رسائل الخطأ فور فشل أي شرط.

  • الحماية الخلفية (Server-Side Validation): فحص البيانات داخل الخادم بعيداً عن أي تلاعب محتمل من أدوات المتصفح.
  • التحويل التلقائي (Auto Redirect): إيقاف تنفيذ المتحكم فوراً وإعادة المستخدم للنموذج عند فشل أي قاعدة.
  • استجابة الواجهات (422 JSON Response): إرجاع كود الحالة 422 بصيغة JSON تلقائياً إذا كان الطلب قادماً عبر AJAX.
مخطط معماري يوضح التحقق من مدخلات النماذج وعرض الأخطاء وحفظ القيم القديمة في إطار العمل Laravel 12
PHP
public function store(Request $request)
{
    $validated = $request->validate([
        'title' => 'required|max:120',
        'body'  => 'required',
    ]);
    return back()->with('status', 'Saved!');
}

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

  • الصيغة النصية (Pipe Syntax): دمج عدة قواعد في نص واحد مفصول بعلامة الأنبوب لسرعة الكتابة.
  • صيغة المصفوفة (Array Syntax): تمرير القواعد كعناصر مصفوفة مستقلة لتجنب تعارض الفواصل مع التعابير النمطية.
  • تأكيد التطابق (confirmed): التحقق التلقائي من تطابق الحقل مع حقل مرافق يحمل اللاحقة _confirmation.
PHP
$validated = $request->validate([
    'name'     => ['required', 'string', 'max:80'],
    'email'    => ['required', 'email'],
    'age'      => ['required', 'integer', 'min:18'],
    'password' => ['required', 'min:8', 'confirmed'],
]);

يقوم Laravel افتراضياً بإزالة المسافات الزائدة وتحويل النصوص الفارغة إلى قيمة خالية null قبل بدء التحقق. يجب إضافة قاعدة nullable للحقول الاختيارية لكي لا ترفضها قواعد النوع اللاحقة، بينما توقف قاعدة bail فحص الحقل فور أول خطأ.

  • السماح بالفراغ (nullable): قبول القيمة الخالية في الحقول الاختيارية دون إطلاق خطأ من قواعد النوع.
  • الإيقاف الفوري (bail): التوقف عن فحص بقية شروط الحقل فور فشل الشرط الأول لتوفير الموارد.
  • التنقيط المتداخل (Dot Notation): فحص عناصر المصفوفات المتداخلة بسهولة عبر كتابة مسار المفتاح بالنقاط.
PHP
$validated = $request->validate([
    'username' => 'bail|required|alpha_dash|min:4',
    'bio'      => 'nullable|string|max:500',
    'website'  => 'nullable|url',
    'social.x' => 'nullable|string|max:50',
]);

يشارك Laravel المتغير $errors تلقائياً مع جميع قوالب Blade عبر وسيط الجلسة، مما يضمن وجوده دائماً دون الحاجة لفحص تعريفه. يمكنك استعراض كافة الأخطاء أعلى النموذج أو استخدام توجيه @error لتلوين الحقل المتأثر وطباعة نص المتغير $message.

  • حقيبة الأخطاء ($errors): كائن متاح دائماً في جميع القوالب يوفر دالتي any و all لفحص الأخطاء.
  • توجيه الخطأ (@error): فحص وجود خطأ لحقل محدد وتوفير نص الرسالة تلقائياً داخل المتغير $message.
  • التنسيق الشرطي (Inline Styling): إضافة أصناف CSS حمراء للحقل المتأثر مباشرة باستخدام توجيه @error.
PHP
<input type="email" name="email"
       class="@error('email') is-invalid @enderror">
@error('email')
    <p class="text-red-600">{{ $message }}</p>
@enderror

عند فشل التحقق وإعادة التوجيه، يحفظ Laravel المدخلات المرسلة مؤقتاً في الجلسة لطلب واحد قادم فقط. يتيح استدعاء الدالة المساعدة old داخل خاصية القيمة في الحقول استرجاع ما كتبه المستخدم سابقاً بدلاً من إجباره على إعادة تعبئة النموذج بالكامل.

  • استرجاع القيمة (old): جلب القيمة المحفوظة مؤقتاً في الجلسة للحقل المحدد أو إرجاع قيمة خالية.
  • القيمة الافتراضية (Fallback Value): تمرير معامل ثانٍ يمثل القيمة الأصلية عند فتح نماذج التعديل لأول مرة.
  • استثناء كلمات المرور (Security): يستبعد الإطار حقول كلمات المرور تلقائياً من الحفظ المؤقت لحماية سرية المستخدم.
PHP
<input type="text" name="title"
       value="{{ old('title', 'Default Title') }}">
<textarea name="notes">{{ old('notes') }}</textarea>
@error('title')
    <span>{{ $message }}</span>
@enderror

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

وجه المقارنة الهندسيالأسلوب اليدوي أو غير المحميمعيار Laravel 12 الحديث
فحص المدخلاتشروط if/else يدوية متداخلة ومعقدة لكل حقلمصفوفة قواعد تصريحية واضحة عبر دالة $request->validate
الاستجابة عند الفشلتحويل يدوي أو توقف الصفحة عن العملتحويل تلقائي 302 أو استجابة 422 JSON عبر معالج الاستثناءات
عرض رسائل الخطأتمرير مصفوفات الأخطاء يدوياً لكل قالب عرضمشاركة المتغير $errors تلقائياً واستخدام توجيه @error المخصص
حفظ مدخلات المستخدمضياع كافة البيانات التي كتبها المستخدم عند الخطأحفظ مؤقت تلقائي في الجلسة يسترجع عبر الدالة old('field')
PHP
$clean = $request->validate([
    'email' => ['bail', 'required', 'email'],
    'phone' => ['nullable', 'string', 'max:20'],
]);
return redirect('/thank-you')
    ->with('email', $clean['email']);
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

أتقنت في هذا الدرس حول «التحقق من مدخلات النماذج وعرض الأخطاء وحفظ القيم القديمة» مفاهيم تدفق التحقق من المدخلات بالخادم، وقواعد التحقق الأساسية وصيغة كتابتها، والحقول الاختيارية وإيقاف الفحص وفق معايير Laravel 12 الحديثة.

الخطوة التالية والدرس القادم

انتقل الآن إلى الدرس التالي «فئات طلبات التحقق المخصصة Form Requests في Laravel» للبناء التراكمي على ما تعلمته.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Input Validation تحقق المدخلات
التحقق من صحة البيانات المرسلة عبر دالة validate وعرض رسائل الخطأ بتوجيه @error واستعادة المدخلات السابقة بدالة old.
للمراجعة
02 Server Side Input Validation Flow تدفق التحقق من المدخلات بالخادم
المفهوم الهندسي والتطبيق العملي المباشر لقسم تدفق التحقق من المدخلات بالخادم في إطار العمل Laravel 12.
للمراجعة
03 Core Validation Rules and Syntax قواعد التحقق الأساسية وصيغة كتابتها
المفهوم الهندسي والتطبيق العملي المباشر لقسم قواعد التحقق الأساسية وصيغة كتابتها في إطار العمل Laravel 12.
للمراجعة
04 Handling Optional Fields and Bail الحقول الاختيارية وإيقاف الفحص
المفهوم الهندسي والتطبيق العملي المباشر لقسم الحقول الاختيارية وإيقاف الفحص في إطار العمل Laravel 12.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 MVC MVC
Model View Controller
النمط المعماري الذي يفصل بين نماذج البيانات Models، وطبقات العرض Views، والمتحكمات Controllers في Laravel.
للمراجعة
02 CLI CLI
Command Line Interface
واجهة سطر الأوامر التي تعمل عبر أداة php artisan لتوليد الملفات وإدارة التطبيق.
للمراجعة
03 HTTP HTTP
Hypertext Transfer Protocol
بروتوكول نقل النص الفائق الذي ينظم طلبات المتصفح واستجابات خادم Laravel.
للمراجعة
04 PSR PSR
PHP Standards Recommendations
المعايير القياسية للغة PHP مثل التحميل التلقائي PSR-4 التي يلتزم بها إطار العمل Laravel.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. اكتب ونفّذ المثال البرمجي المشروح في قسم «تدفق التحقق من المدخلات بالخادم» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.

  2. بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «قواعد التحقق الأساسية وصيغة كتابتها» وقارن مخرجات التنفيذ.

تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 3أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

ما الهدف الهندسي الأساسي من تدفق التحقق من المدخلات بالخادم في إطار العمل Laravel 12؟

يسهم تدفق التحقق من المدخلات بالخادم في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.

02

يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «قواعد التحقق الأساسية وصيغة كتابتها» على رفع جودة الكود وسهولة اختباره آلياً.

صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.

03

أي آلية في Laravel 12 تتولى إدارة الحقول الاختيارية وإيقاف الفحص بشكل مباشر ومنظم؟

توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة الحقول الاختيارية وإيقاف الفحص.

04

لماذا يُعد تطبيق عرض رسائل الخطأ في القوالب مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟

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

05

في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.

خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.

06

ما المزايا الهندسية التي يحققها تطبيق استعادة المدخلات السابقة بالدالة old في Laravel 12؟ (اختر كل ما ينطبق)

يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.

07

يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.

صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.

08

ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في ملخص قواعد التحقق وعرض الأخطاء؟

يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.