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

التحقق من البيانات JSON عن طريق validate في Laravel

Mohammad Yousef3

السؤال

لدي بيانات على شكل 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...