محمود سامي7 نشر 9 ديسمبر 2021 أرسل تقرير نشر 9 ديسمبر 2021 (معدل) خطأ برمجي لارافيل /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit() { return view('clients.edit'); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request ,Guest $guest, $id) { $guest= Guest::find($id); $guest->name = $request->name; $guest->guest_type = $request->guest_type; $guest->phone_of_work = $request->phone_of_work; $guest->approve_type = $request->approve_type; $guest->place_of_issue = $request->place_of_issue; $guest->date_of_birth = $request->date_of_birth; $guest->email = $request->email; $guest->category = $request->category; $guest->nationalty = $request->nationalty; $guest->id_copy = $request->id_copy; $guest->date_of_expiry = $request->date_of_expiry; $guest->kind = $request->kind; $guest->phone = $request->phone; $guest->place_of_work = $request->place_of_work; $guest->address = $request->address; $guest->note = $request->note; $guest->note_2 = $request->note_2; $guest->approve_number = $request->approve_number; $guest->save(); session()->flash('flash_message', 'تم نعديل العميل بنجاح'); return redirect(route('clients.index')); } ////////////////////////////////////////////////////////////// تم التعديل في 9 ديسمبر 2021 بواسطة عبود سمير توضيح السؤال 1 اقتباس
1 سمير عبود نشر 9 ديسمبر 2021 أرسل تقرير نشر 9 ديسمبر 2021 سبب المُشكلة أن الدالة update يجب أن تٌمرر لها 3 معاملات هي request و guest و id حيث أنها تلقت معاملين فقط و هما request و guest أي أن المُعامل الذي لم يتم تمريره هو id عند التنفيذ. أي أنه عند وضعك لمسار الدالة الموافق لها يجب تمرير كل من المُعاملين id و guest حيث أن المعامل request يتم حقنه من طرف لارافل تلقائياً. هذا ما يعنيه الخطأ أي أنك إن واجهت نفس الخطأ مرة ثانية يجب أن تُفكر بهذا المنطق. الآن سأسألك سؤال لماذا أضفت المُعامل id للدالة update و أنت بالفعل تملك بيانات الزائر مُسبقاً في المُعامل guest ؟ في نظري لست بحاجة لتمرير المُعامل id و لست بحاجة لوضعه كمعامل للدالة update كما لست بحاجة لجلب بيانات الزائر (guest) عن طريق: $guest= Guest::find($id); لارافل تقوم بذلك تلقائياً عن طريق ما يُسمى بربط النموذج بالمسار (Route model binding) بالتالي كل ما تحتاج له هو مسح المُعامل id من الدالة update و مسح السطر السابق. 2 اقتباس
السؤال
محمود سامي7
خطأ برمجي لارافيل
توضيح السؤال
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.