شرح صفوف ومحتوى الفقرة
بدلاً من تحويل المسار عند فشل التحقق، يضبط معالج نماذج AJAX رمز الحالة http_response_code(422) ويُرجع مصفوفة أخطاء errors مفهرسة باسم كل حقل.
- اجمع رسائل الخطأ لكل حقل في مصفوفة ترابطية مثل
$errors["email"] = "البريد الإلكتروني غير صالح.". - إذا لم تكن مصفوفة
$errorsفارغة، أرسل رمز الحالة422مع كائن{"ok": false, "errors": $errors}. - تمر الواجهة الأمامية على مفاتيح
data.errors، وتضبط الخاصيةaria-invalid="true"لكل حقل خاطئ وتعرض رسالته تحته مباشرة.
يتيح إرجاع جميع أخطاء الحقول دفعة واحدة في استجابة 422 للمستخدم تصحيح كافة المدخلات دون فقدان ما كتبه في النموذج.
PHP
<?php
$_POST = ['email' => 'not-an-email', 'comment' => 'Hi'];
$errors = [];
if (!filter_var($_POST['email'] ?? '', FILTER_VALIDATE_EMAIL)) {
$errors['email'] = 'Please enter a valid email address.';
}
if (mb_strlen(trim((string) ($_POST['comment'] ?? ''))) < 10) {
$errors['comment'] = 'Comment must be at least 10 characters.';
}
http_response_code(422);
echo json_encode(['ok' => false, 'errors' => $errors]) . "\n";