في هذا الدرس 6تصفّح المواضيع
يمكن تجاوز قيود المتصفح بسهولة، لذا يعد التحقق من المدخلات في الخادم خط الدفاع الأساسي لكل طلب وارد في Laravel 12. تستدعي دالة التحقق المدمجة فحص البيانات تلقائياً وتعيد توجيه المستخدم للصفحة السابقة مع رسائل الخطأ فور فشل أي شرط.
- الحماية الخلفية (Server-Side Validation): فحص البيانات داخل الخادم بعيداً عن أي تلاعب محتمل من أدوات المتصفح.
- التحويل التلقائي (Auto Redirect): إيقاف تنفيذ المتحكم فوراً وإعادة المستخدم للنموذج عند فشل أي قاعدة.
- استجابة الواجهات (422 JSON Response): إرجاع كود الحالة 422 بصيغة JSON تلقائياً إذا كان الطلب قادماً عبر AJAX.
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.
$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): فحص عناصر المصفوفات المتداخلة بسهولة عبر كتابة مسار المفتاح بالنقاط.
$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.
<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): يستبعد الإطار حقول كلمات المرور تلقائياً من الحفظ المؤقت لحماية سرية المستخدم.
<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') |
$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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 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
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 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.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب ونفّذ المثال البرمجي المشروح في قسم «تدفق التحقق من المدخلات بالخادم» داخل مشروع Laravel 12 المحلي وتحقق من النتيجة.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم «قواعد التحقق الأساسية وصيغة كتابتها» وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
ما الهدف الهندسي الأساسي من تدفق التحقق من المدخلات بالخادم في إطار العمل Laravel 12؟
يسهم تدفق التحقق من المدخلات بالخادم في تنظيم منطق التطبيق بأسلوب معياري آمن وقابل للصيانة في Laravel 12.
يساعد الالتزام باصطلاحات Laravel 12 الرسمية في قسم «قواعد التحقق الأساسية وصيغة كتابتها» على رفع جودة الكود وسهولة اختباره آلياً.
صواب؛ الالتزام بالمعايير القياسية في Laravel 12 يجعل الكود واضحاً وسهل الفحص والصيانة.
أي آلية في Laravel 12 تتولى إدارة الحقول الاختيارية وإيقاف الفحص بشكل مباشر ومنظم؟
توفر طبقة إطار العمل وحاوية الخدمات في Laravel 12 الأدوات القياسية لإدارة الحقول الاختيارية وإيقاف الفحص.
لماذا يُعد تطبيق عرض رسائل الخطأ في القوالب مهماً عند بناء تطبيقات Laravel 12 جاهزة للإنتاج؟
لأنه يمنع الأخطاء البرمجية الخفية ويوحد سلوك التطبيق بين بيئتي التطوير والإنتاج.
في Laravel 12، يُنصح بكتابة مفاتيح الإنتاج السرية مباشرة داخل ملفات الكود المصدري المرفوعة إلى Git بدلاً من ملفات البيئة.
خطأ؛ يجب حفظ المفاتيح والبيانات السرية في متغيرات البيئة وعدم رفعها أبداً إلى مستودع Git.
ما المزايا الهندسية التي يحققها تطبيق استعادة المدخلات السابقة بالدالة old في Laravel 12؟ (اختر كل ما ينطبق)
يوفر فصلاً واضحاً للمسؤوليات، وأماناً أعلى أثناء التنفيذ، وتعاوناً أسهل بين أفراد الفريق.
يوظف إطار العمل Laravel 12 ميزات PHP 8 الحديثة مثل تحديد أنواع القيم المرجعة لجعل الكود أكثر وضوحاً وأماناً.
صواب؛ يعتمد Laravel 12 بشكل كامل على الصياغة الحديثة للغة PHP 8.2+ وسلامة الأنواع.
ما الفرق الجوهري بين معيار Laravel 12 الحديث والملفات اليدوية التقليدية في ملخص قواعد التحقق وعرض الأخطاء؟
يوفر Laravel 12 واجهات قياسية موحدة وحماية مدمجة تغني عن الكود اليدوي المعرض للأخطاء.