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

خطأ برمجي لارافيل: ArgumentCountError Too few arguments ؟

محمود سامي حسين

السؤال

خطأ برمجي لارافيل

/**
     * 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'));
    }





//////////////////////////////////////////////////////////////

 

hjhjhk.PNG

hghj.PNG

klk;lk;.PNG

تم التعديل في بواسطة عبود سمير
توضيح السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

سبب المُشكلة أن الدالة 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 و مسح السطر السابق.

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...