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

التحقق validation ضمن المصفوفات في لارافيل

Amir Alsaeed

السؤال

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

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

$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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...