Amir Alsaeed نشر 21 مارس 2021 أرسل تقرير نشر 21 مارس 2021 كيف يمكنني التحقق من عناصر مصفوفة عند الإدخال في لارافيل؟ لقد قمت بقراءة التوثيق ووضعت علامة النجمة ضمن التحقق كالتالي: $validator = Validator::make($request->all(), [ "attributes.*" => 'required|distinct|min:3', ]); ولكن عندما وضعت هذا الشرط ضمن المتحكّم: if ($validator->fails()) { ..... } وقمت بتمرير مصفوفة attributes فارغة لم يتم تنفيذ الكود داخل الشرط أي أن الشرط أعاد القيمة false وبالتالي تم التحقق بنجاح. ما الخطأ هنا؟ اقتباس
0 Sam Ahw نشر 21 مارس 2021 أرسل تقرير نشر 21 مارس 2021 إن علامة النجمة * تستخدم للتحقق من قيم عناصر المصفوفة وليس المصفوفة بحد ذاتها، لذلك عند إرسال مصفوفة فارغة سيتم تطبيق شروط التحقق على العناصر وفي حال كانت فارغة فإنها بالتالي لا تحوي عناصر حتى يتم التحقق منها ولذلك لن يفشل التحقق أو الدخول وتنفيذ الكود داخل الشرط. لذلك يجب إضافة اسم المتغيّر أو المصفوفة بشكل منفصل عن العناصر ودون استخدام علامة النجمة للدلالة على المصفوفة نفسها بالشكل التالي: $validator = Validator::make($request->all(), [ "attributes" => "required|array|min:3", "attributes.*" => "required|string|distinct|min:3", ]); وبهذا الشكل سيتم إجراء التحقق على المصفوفة بمجموعة من القيود، وعلى عناصر هذه المصفوفة بقيود أخرى. 1 اقتباس
0 محمد أيت لعرايك نشر 21 مارس 2021 أرسل تقرير نشر 21 مارس 2021 (معدل) الطريقة الموصى بها لكتابة منطق التحقق هي وضع هذا المنطق في ملف منفصل. بهذه الطريقة سيبقى الكود الخاص بك نظيفًا أكتب الأمر التالي php artisan make:request SomeRequest في الدالة Rules حدد قواعد التحقق الخاصة بك و هنا سنشرح كيف تتحقق من مصفوفة public function rules() { return [ "name" => [ 'required', // هدا الحقل إجباري 'array', // هذا الحقل يجب أن يكون على شكل مصفوفة 'min:3' // ويجب أن تكون المصفوفة تحتوي على الأقل على ثلاثة عناصر 'distinct' // ويجب أن تكون عناصر مختلفة ], // حقول أخرى هنا ]; } تم التعديل في 21 مارس 2021 بواسطة محمد أيت لعرايك اقتباس
السؤال
Amir Alsaeed
كيف يمكنني التحقق من عناصر مصفوفة عند الإدخال في لارافيل؟
لقد قمت بقراءة التوثيق ووضعت علامة النجمة ضمن التحقق كالتالي:
$validator = Validator::make($request->all(), [ "attributes.*" => 'required|distinct|min:3', ]);
ولكن عندما وضعت هذا الشرط ضمن المتحكّم:
if ($validator->fails()) { ..... }
وقمت بتمرير مصفوفة attributes فارغة لم يتم تنفيذ الكود داخل الشرط أي أن الشرط أعاد القيمة false وبالتالي تم التحقق بنجاح. ما الخطأ هنا؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.