يختار المستخدم خدمة عن بعد فيختفي حقل المكتب، لكن المتصفح قد يرسل قيمة قديمة لذلك الحقل. اختفاء العنصر ليس عقدًا لخدمة الحفظ. عند استخدام Laravel exclude_if، راجع البيانات الخارجة من التحقق ثم تتبع ما يستلمه المسار الذي يكتب السجل.
ما الذي تستبعده القاعدة؟
توضح وثائق Laravel 12 أن exclude_if تستبعد الحقل من البيانات التي تعيدها validate وvalidated عند تطابق شرط الحقل الآخر. وتوفر Rule::excludeIf شرطًا منطقيًا أو دالة للشروط المركبة. هذا وصف لنتيجة التحقق، وليس وعدًا بحذف القيمة من الطلب الأصلي أو من قاعدة البيانات.
في مثال افتراضي، يحتوي طلب الخدمة على mode وoffice_id. عند اختيار Remote يُستبعد المكتب من البيانات المعتمدة. إذا استخدمت خدمة الحفظ كل بيانات الطلب الخام بعد ذلك، فقد تتجاوز النتيجة التي قصدتها القاعدة. اختبر مدخلات الخدمة نفسها ببيانات مصطنعة.
جرّب التبديل والإرسال المباشر
| الطلب التجريبي | ما تراجعه |
|---|---|
| خدمة حضورية ومكتب صالح | تطبيق قواعد المكتب المطلوبة لذلك الوضع |
| خدمة عن بعد مع مكتب قديم | غياب المكتب عن بيانات الحفظ المعتمدة |
| تبديل الوضع مرتين قبل الإرسال | عدم تسرب قيمة مخفية من حالة سابقة |
| وضع مجهول أو ناقص | رفض واضح وفق العقد، لا اختيار افتراضي غير مقصود |
استبعاد القيمة لا يقرر معنى التحديث
في تعديل سجل قائم، هل غياب office_id يعني الاحتفاظ بالمكتب السابق أم إلغاء ارتباطه؟ هذا قرار عمل مستقل. لا تحول الاستبعاد تلقائيًا إلى null دون اتفاق، ولا تفترض أنه يمسح القيمة السابقة. اختبر السجل بعد الحفظ إلى جانب اختبار حمولة الخدمة، وميز الإنشاء عن التعديل.
كذلك لا تعوض القاعدة التفويض: مكتب صالح بنيويًا قد يتبع شركة أخرى. يحتاج اختيار المكتب إلى فحص صلاحيات المستخدم ونطاق المؤسسة في الخادم، مع رفض الحساب التجريبي غير المخول.
سلّم دليلًا على الحدود الفعلية
في تطوير CRM احتفظ بطلبات اختبار منقحة من الأسرار والنتيجة المتوقعة لكل حالة. وضمن المراجعة التقنية وثق مصدر بيانات الحفظ وإصدار Laravel المستخدم. نجاح القاعدة في اختبار منفصل لا يثبت أن كل مسارات الكتابة تعتمد نتيجتها.




