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

خطأ متغير غير معرف undefined vatiable في لارافل

Mohammad Kiblawi

السؤال

السلام عليكم

اريد ان اعما post  ل عناصر المشروع (titlte description image) لكن عند الضغط على الزر publish لا يقوم ال form بتوجيهي الى /projects 

فاقوم بكاتبته في ال url ولكن عند كتابته يظهر هذا الخطئ

Annotation 2021-08-12 025229.png

Annotation 2021-08-12 025314.png

Annotation 2021-08-12 025443.png

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

Recommended Posts

  • 0

إذا كنت تريد إعادة توجيه المستخدم بعد إضافة بيانات المشروع لقاعدة البيانات يُمكنك ذلك من خلال الدالة المسؤولة عن التخزين في آخر الدالة تكتب:

return redirect('/projects');

// أو 

return redirect()->route('projects.index');

أما المشكلة الأساسية أي عدم التعرف على المتغير projects فهل تأكدت من أنك تمرر المتغير من الدالة index:

return view('projects.index', compact('projects'));
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 7 ساعات قال عبود سمير:

إذا كنت تريد إعادة توجيه المستخدم بعد إضافة بيانات المشروع لقاعدة البيانات يُمكنك ذلك من خلال الدالة المسؤولة عن التخزين في آخر الدالة تكتب:


return redirect('/projects');

// أو 

return redirect()->route('projects.index');

أما المشكلة الأساسية أي عدم التعرف على المتغير projects فهل تأكدت من أنك تمرر المتغير من الدالة index:


return view('projects.index', compact('projects'));

السلام عليكم

نعم لقد قمت بتمرير المتغير في الدالة index و لكن بقي الحال كما هو

Annotation 2021-08-12 111503.png

 

السلام عليكم

نعم لقد قمت بتمرير المتغير في الدالة index و لكن بقي الحال كما هو

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

  • 0
بتاريخ الآن قال Mohammad Kiblawi:

السلام عليكم

نعم لقد قمت بتمرير المتغير في الدالة index و لكن بقي الحال كما هو

لكن لاحظ انك تقوم بتعريف المتغير بالإسم project بدون s و تمرره ايضا بذلك الإسم يجب تمرير الإسم بنفس الإسم الذي تستخدمه

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

  • 0
بتاريخ 19 دقائق مضت قال عبود سمير:

لكن لاحظ انك تقوم بتعريف المتغير بالإسم project بدون s و تمرره ايضا بذلك الإسم يجب تمرير الإسم بنفس الإسم الذي تستخدمه

شكرا لك حلت المشكلة و ظهر المنشور لكن هنالك مشاكل اخرى

اولا لا يتم التوجيه بعد الضغط على الزر publish

ثانيا لا تظهر صورة المنشور التي ادخلتها

ثالثا لا يمكنني اضافة اكثر من منشور اي فقط منشور واحد 

سأقوم بتسجيل فيديو صغير حتى تتوضح الامور

Company_-_Google_Chrome_2021-08-12_11-48-39.mp4

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

  • 0
بتاريخ 27 دقائق مضت قال Mohammad Kiblawi:

شكرا لك حلت المشكلة و ظهر المنشور لكن هنالك مشاكل اخرى

اولا لا يتم التوجيه بعد الضغط على الزر publish

ثانيا لا تظهر صورة المنشور التي ادخلتها

ثالثا لا يمكنني اضافة اكثر من منشور اي فقط منشور واحد 

سأقوم بتسجيل فيديو صغير حتى تتوضح الامور

من خلال الفيديو يتضح ان بعد إرسال الطلبية جزء ال validation يفشل لسبب او لآخر يمكنك التأكد من ذلك، عند فشل التحقق يتم إرجاع المستخدم للخلف أي للصفحة الماضية و يتم إرجاع رسائل الأخطاء في المصفوفة errors

تحقق من ان اسماء الحقول المطلوبة هي نفسها التي تضعها في حقول الإستمارة كما انه لرفع ملف او صورة يجب إضافة الخاصية 

enctype="multipart/form-data" للإستمارة تأكد من هذه الأمور التي اخبرتك بها إن لم تستطع يرجى توضيح شيفرات الإستمارة و الدالة المسؤولة عن تخزين السجل

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

  • 0
بتاريخ 16 دقائق مضت قال عبود سمير:

من خلال الفيديو يتضح ان بعد إرسال الطلبية جزء ال validation يفشل لسبب او لآخر يمكنك التأكد من ذلك، عند فشل التحقق يتم إرجاع المستخدم للخلف أي للصفحة الماضية و يتم إرجاع رسائل الأخطاء في المصفوفة errors

تحقق من ان اسماء الحقول المطلوبة هي نفسها التي تضعها في حقول الإستمارة كما انه لرفع ملف او صورة يجب إضافة الخاصية 

enctype="multipart/form-data" للإستمارة تأكد من هذه الأمور التي اخبرتك بها إن لم تستطع يرجى توضيح شيفرات الإستمارة و الدالة المسؤولة عن تخزين السجل

هذه هي الصور

Annotation 2021-08-12 123841.png

Annotation 2021-08-12 123937.png

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

  • 0
بتاريخ 2 دقائق مضت قال Mohammad Kiblawi:

هذه هي الصور

لاحظ في الإستمارة حقل العنوان أعطيته نفس الإسم description في الخاصية name و هي نفس القيمة للحقل الثاني تحقق من الحقول التي تحقق منها في التابع store في جزء ال validation موجودة بنفس الأسماء في الإستمارة أعتقد ان هناك حقل title يجب ان يكون من ضمن البيانات المرسلة في الطلب لكن في الإستمارة غير موجود فأنت تعطيه إسم description 

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

  • 0
بتاريخ منذ ساعة مضت قال عبود سمير:

لاحظ في الإستمارة حقل العنوان أعطيته نفس الإسم description في الخاصية name و هي نفس القيمة للحقل الثاني تحقق من الحقول التي تحقق منها في التابع store في جزء ال validation موجودة بنفس الأسماء في الإستمارة أعتقد ان هناك حقل title يجب ان يكون من ضمن البيانات المرسلة في الطلب لكن في الإستمارة غير موجود فأنت تعطيه إسم description 

شكرا كثيرا لك على مساعدتي

تم التوجيه و لكن مع خطئ اعتقد له علاقة بالصورة لكن لم اعرف ميف احلها

Annotation 2021-08-12 140010.png

Annotation 2021-08-12 140010.png

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

  • 0
بتاريخ 12 دقائق مضت قال Mohammad Kiblawi:

شكرا كثيرا لك على مساعدتي

تم التوجيه و لكن مع خطئ اعتقد له علاقة بالصورة لكن لم اعرف ميف احلها

الخطأ بداخل الدالة store في المتحكم حيث أنه يتم إستدعاء الدالة extension على null أعتقد أنه تريد هناك جلب لاحقة الصورة لكن لا يمكن تحديد سبب المشكلة إذا لم أرى الكود الخاص بالدالة store

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

  • 0
بتاريخ 5 دقائق مضت قال عبود سمير:

الخطأ بداخل الدالة store في المتحكم حيث أنه يتم إستدعاء الدالة extension على null أعتقد أنه تريد هناك جلب لاحقة الصورة لكن لا يمكن تحديد سبب المشكلة إذا لم أرى الكود الخاص بالدالة store

store function

Annotation 2021-08-12 142404.png

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

  • 0
بتاريخ 15 دقائق مضت قال Mohammad Kiblawi:

store function

لاحظ السطر 53 و السطر 54 أنت تستخدم إسم الحقل image و ليس لديك في الإستمارة حقل بالإسم image بل image_path لجب اللاحقة يُمكنك إستخدام:

$extension = $request->file('image_path')->extension();

نفس الأمر في السطر 54 يجب إستخدام الحقل image_path بدل image:

$request->file('image_path')->move ...

// أو 

$request->image_path->move ...

أنصحك بإستخدام نظام التخزين في laravel فهو بسيط فقط إجعل الdisk الذي يستخدمه التطبيق public و قم بإنشاء الوصلة بين storage و public و استخدم دالة store بهذا الشكل:

$path = $request->file('image_path')->store('images');

ستجد في التوثيق الرسمي كل ما تحتاجه: file-uploads

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

  • 0
بتاريخ 1 ساعة قال عبود سمير:

لاحظ السطر 53 و السطر 54 أنت تستخدم إسم الحقل image و ليس لديك في الإستمارة حقل بالإسم image بل image_path لجب اللاحقة يُمكنك إستخدام:


$extension = $request->file('image_path')->extension();

نفس الأمر في السطر 54 يجب إستخدام الحقل image_path بدل image:


$request->file('image_path')->move ...

// أو 

$request->image_path->move ...

أنصحك بإستخدام نظام التخزين في laravel فهو بسيط فقط إجعل الdisk الذي يستخدمه التطبيق public و قم بإنشاء الوصلة بين storage و public و استخدم دالة store بهذا الشكل:


$path = $request->file('image_path')->store('images');

ستجد في التوثيق الرسمي كل ما تحتاجه: file-uploads

اولا شكرا لك اخي الكريم و يعطيك العافية لقد اتعبتك معي

اخي الكريم هنالك امثر من اسفسار لدي ان لم يكن فيها ثقل

اولا الصور لم تظهر في ال cards(صورة رقم 0)

0.thumb.png.3d43ac2db766892a253ee613a65de3f6.png

 

 

مع انني تاكدت من مسارها في dev option و كما ان الصور تتخزن في مكانها المحدد (صورة رقم 1 و 2) فلماذا لا تظهر

1.thumb.png.e22676c7cb2fa7ae734d59e4362ee5cd.png2.thumb.png.0fc4658998012e01b77de223c09757ea.png

 

 

 

ثانيا  في الموجهات لقد استخدمت route::rescource  (صورة رقم 3) مع ProjectController::class

3.thumb.png.a006cec6b2ceaefe6ea831bf8dd0f23e.png

 

 

قمت بتغير المسار من Route::resource  الى Route::post مع ال method Store كما في الصورة رقم 4

 

4.thumb.png.7d3f154e5804beabfef8478873a3f7be.png

 

 

فظهر لي خطئ يقول لي ان ال method not allowed or method not supported في الصورة رقم 55.thumb.png.f33cb4aaa5c288b2882f3b4f0035442d.png

 

كما نعلم ان get method هي عبر الurl بينما method post لا تكون عبر ال url كما ان ال form لديه طلب من نوع post و لكن

-ما الفرق بين route::resource و route::post؟

-كيف يمكنني ان اجعل هذا المسار مع الطلب post ز  (Route::post) دون وجود خطئ 

 

و شكرا لك❤

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

  • 0
بتاريخ 8 ساعات قال Mohammad Kiblawi:

اولا الصور لم تظهر في ال cards(صورة رقم 0)

هل قمت بتنفيذ التعليمة:

php artisan storage:link

يوجد أيضا تعديل في ملف env. لتحديد سواقة حفظ الملفات في public ابحث عن ذلك

بتاريخ 8 ساعات قال Mohammad Kiblawi:

فظهر لي خطئ يقول لي ان ال method not allowed or method not supported في الصورة رقم 5

طبعا لن تعمل GET في حال قمت بتحديد المسار أن يقبل POST فقط

بتاريخ 8 ساعات قال Mohammad Kiblawi:

-ما الفرق بين route::resource و route::post؟

route::post تستقبل الطلبيات التي من نوع POST فقط، أما route::resource فهي تقوم بتشكيل جميع المسارات من إضافة/حذف/تعديل...

بتاريخ 8 ساعات قال Mohammad Kiblawi:

-كيف يمكنني ان اجعل هذا المسار مع الطلب post ز  (Route::post) دون وجود خطئ 

أبسط حل أن تضيف مسار لكل طلبية حسب نوعها ودالة مناسبة ضمن المتحكم تحوي شيفرات مناسبة لها.

التعليمة التي تظهر المسارات هي: php artisan route:list

قم بمراجعة الدروس من فضلك

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...