اذهب إلى المحتوى

السؤال

نشر

كيف يمكنني التحقق من عناصر مصفوفة عند الإدخال في لارافيل؟

لقد قمت بقراءة التوثيق ووضعت علامة النجمة ضمن التحقق كالتالي:

$validator = Validator::make($request->all(), [
            "attributes.*" => 'required|distinct|min:3',
        ]);

ولكن عندما وضعت هذا الشرط ضمن المتحكّم:

if ($validator->fails()) {
.....
}

وقمت بتمرير مصفوفة attributes فارغة لم يتم تنفيذ الكود داخل الشرط أي أن الشرط أعاد القيمة false وبالتالي تم التحقق بنجاح. ما الخطأ هنا؟

Recommended Posts

  • 0
نشر

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

لذلك يجب إضافة اسم المتغيّر أو المصفوفة بشكل منفصل عن العناصر ودون استخدام علامة النجمة للدلالة على المصفوفة نفسها بالشكل التالي:

$validator = Validator::make($request->all(), [
    "attributes"    => "required|array|min:3",
    "attributes.*"  => "required|string|distinct|min:3",
]);

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

  • 0
نشر (معدل)

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

أكتب الأمر التالي

php artisan make:request SomeRequest

في الدالة Rules حدد قواعد التحقق الخاصة بك و هنا سنشرح كيف تتحقق من مصفوفة

public function rules()
{
   return [
    "name"    => [
          'required', // هدا الحقل إجباري
          'array', // هذا الحقل يجب أن يكون على شكل مصفوفة
          'min:3'  // ويجب أن تكون المصفوفة تحتوي على الأقل على ثلاثة عناصر
          'distinct' // ويجب أن تكون عناصر مختلفة
    ],
     
     // حقول أخرى هنا
   
  ];
}

 

تم التعديل في بواسطة محمد أيت لعرايك

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...