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

السؤال

نشر

أحاول التحقق من مصفوفة POST في Laravel:

$validator = Validator::make($request->all(), [
  "names.*" => 'required|string',
  "description.*" => "required|string"
]);

أرسل POST فارغًا وأحصل على خطأ. في التحقق .

كيف نتحقق من صحة المصفوفة في Laravel؟ عندما أرسل النموذج مع إدخال 

input name="names[]"

 

Recommended Posts

  • 1
نشر

يتم استخدام رمز النجمة (*) للتحقق من القيم في المصفوفة ، وليس المصفوفة نفسها.

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

في المثال أعلاه:

  • "names"  يجب أن تكون مصفوفة تحتوي على 3 عناصر على الأقل ،
  • يجب أن تكون القيم في مصفوفة "names" عبارة عن سلاسل مميزة (فريدة) ، بطول 3 أحرف على الأقل.

ملاحظة: منذ Laravel 5.5 يمكنك استدعاء التابع validate  مباشرة على كائن Request مثل:

$data = $request->validate([
  "names"    => "required|array|min:3",
  "names.*"  => "required|string|distinct|min:3",
  "description" => "required|string"
]);
  • 0
نشر (معدل)

وأيضا يمكنك إستخدام قواعد التحقق من الصحة المخصصة  Custom Validation Rules

نفد الأمر

php artisan make:rule ValidateArray

في الملف المولد أكتب التالي:

<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class ValidateArray implements Rule
{
    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        return  is_array($value);  // نتحقق أن المتغير عبارة عن مصفوفة
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The :attribute must be an array .';  // هنا تكتب رسالة للمستخدم
    }
}

بمجرد تحديد القاعدة ، يمكنك إرفاقها بمدقق عن طريق تمرير مثيل لكائن القاعدة مع قواعد التحقق الأخرى الخاصة بك:

use App\Rules\ValidateArray;

$request->validate([
    'name' => ['required', 'string', new ValidateArray()],
]);

.و يمكنك أيضا إضافة العديد من الشروط في القاعدة كطول و نوعية مكونات المصفوفة

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

يمكنك عمل Loop على مصفوفة الإدخال و إضافة rules لكل إدخال مثل 

$input = Request::all ();
$rules = [];

foreach ($input['name'] as $key => $val)
{
     $rules['name.'. $key] = 'required|distinct|min:3';
}

$ rules ['description'] = 'required|string';

$ validator = Validator::make ($input, $rules);

// Now check validation:
if ($ validator->fails())
{
   
}

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...