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

السؤال

نشر

لدي بيانات على شكل JSON كما هي أمامكم

payload = {
  "name": "My Name",
  "email": "email@xyz.com",
  "password": "password",
  "gender": "male",
  "age": 10,
  "mobile_number": "0123456789",
  "company_name": "xyz",
  "verification_status": 0,
  "image_url": "image.png",
  "address": "Address",
  "lattitude": 0,
  "longitude": 0,
  "message": "a Message",
  "profession_id": 1,
  "designation_id": 1,
  "skills": [
    {
      "id": 1,
      "custom" : "new custom1"
    }
   ]
}

وأريد أن أقوم بالتحقق من صحتها باستخدام validate قبل ادراجها في قاعدة البيانات

public function store(Request $request)
{

    $this->validate($request, [
        'name' => 'digits',
        'age' => 'digits',
        ]);
}

ولكن هذا البرنامج لا يعمل, ما الحل ؟

Recommended Posts

  • 0
نشر

بما أنّ البيانات على شكل JSON يجب أولًا قراءة محتوياتها لتتمكن Laravel من التعامل معها

وذلك باستخدام الدالة:

json_decode($data);

التي تقوم بتحويل شكل البيانات من JSON إلى مصفوفة

بعد ذلك نمررها إلى validate ونطبق القواعد على البيانات

use Validator;
public function store(Request $request)
{
    $data = json_decode($request->payload, true);
    $rules = [
        'name' => 'digits:8',
        'age' => 'digits:8'
    ];

    $validator = Validator::make($data, $rules);
    if ($validator->passes()) {
        // الاجراءات عند عدم صحة البيانات 
    } else {
        // الاجراءات عند نجاح عملية التحقق
    }
}

ولكن يجب أن نتذكر بأن القاعدة digits

تقوم بالتحقق من أن القيم عبارة عن أرقام, ويجب ان نمرر لها عدد الخانات المسموح بها فتصبح هكذا:

digits:8

 

  • 0
نشر

يجب تحويل البيانات التي تكون على شكل json إلى متغيرات PHP باستخدام json_decode ,وهذه الدالة تقوم بأخذ سلسلة JSON المشفرة وتحويلها إلى متغير PHP.

فيمكننا التحقق من بيانات json في المتحكم بهذه الطريقة 

use Validator;

public function store(Request $request)
{
    $data = json_decode($request->payload, true);
    $rules = [
        'name' => 'digits:8', 
        'age' => 'digits:8'
    ];

    $validator = Validator::make($data, $rules);
    if ($validator->passes()) {
        // ... 
		
    } else {
	   // ...
        dd($validator->errors()->all());
    }
}

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...