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

كيف يتم حفظ البيانات مؤقتا ثم يتم ارسالها الى قاعدة البيانات

ابراهيم الخليل سماني

السؤال

السلام عليكم

في تطبيق لارافل اريد ارسال استمارة بيانات الى قاعدة البيانات واريد تقسيمها الى مراحل اثناء ملئها  مرحلة بعدها مرحلة ..الخ

بحيث في الاخير يتم حفظ بيانات الاستمارة الى قاعدة البيانات

شكرا لكم

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يمكنك تقسيم إرسال البيانات إلى عدة مسارات، يُخزن كل منها جزء بيانات الاستمارة في تلك المرحلة ضمن بيانات الجلسة session للمستخدم، وفي المرحلة الأخيرة يمكن استخراج تلك البيانات من الجلسة وإرسالها إلى قاعدة البيانات، حيث تُعرف لكل خطوة مسار لعرض استمارة form تلك الخطوة ومسار إرسال البيانات لها،  بشكل مشابه للتالي: 

// الخطوة الأولى
Route::get('step-one', ...)->name('step.one');
Route::post('step-one', ...);

... // خطوات إضافية

// الخطوة الأخيرة
Route::get('step-final', ...)->name('step.final');
Route::post('step-final', ...);

وفي متحكم كل خطوة نستخرج البيانات الخاصة بها من الطلب ونخزنها ضمن الجلسة بشكل مشابه للتالي:


public function index()
{
  // عرض نموذج الخطوة
  return view('steps.one',...);
}


public function store(Request $request)
{
  // استخراج البيانات الخطوة
  $data = $request->validate([...]);
  
  // تخزينها ضمن الجلسة
  $request->session()->put('data', $data)

  // إعادة التوجيه إلى الخطوة التالية
  return redirect()->route('step.two');
}

وفي تابع تخزين بيانات آخر خطوة يمكنك استخراج بيانات الخطوات السابقة ثم تخزينها في قاعدة البيانات:

public function store(Request $request)
{
  // استخراج البيانات الخطوة الأخيرة
  $data = $request->validate([...]);
  
  // استخراج بيانات الخطوات السابقة
  $step_one_data = $request->session()->get('step-one-data');
  $step_one_data = $request->session()->get('step-two-data');
  ...
  // تخزين البيانات
  Model::create(...);

  // (اختياري) مسح البيانات المخزنة بعد نجاح العملية كاملةً
  $request->session()->forget('step-one-data');
  $request->session()->forget('step-two-data');

  // نجاح الخطوات كاملة 
  ..
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...