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

منع ظهور خطأ عند طلب رابط من نوع post في لارافيل

اسماعيل صدوقي

السؤال

سلام وعليكم,

كيف يمكنني منع ظهور الخطأ MethodNotAllowedHttpException عند طلب رابط من نوع post من المتصفح مباشرة

للتوضيح:

Screenshot_2021-03-13_12-26-43.png.aa3fbba22e0889a3e2b625cf0c73f34a.png

Screenshot_2021-03-13_12-27-37.png.e95dedb5b4ffca50f1448c3a5046cf1b.png

Screenshot_2021-03-13_12-27-56.thumb.png.127b19fc97d043771af7c0f457953742.png

 

حاولت كتابة هذا الكود في الملف handler :

 public function report(Throwable $exception)
    {
        parent::report($exception);
    }

 public function render($request, Throwable $e){
        if($e instanceof MethodNotAllowedHttpException){
            return back();
        }
 }

نجح لكن ظهرت مشكلة و هي في حالة ارسال مثلا form فارغ تظهر صفحة بيضاء و من المفروض تظهر الاخطاء

شكرا لكم.

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

Recommended Posts

  • 0

أخي ببساطة في ملف .env قم بتغيير 

APP_DEBUG=true

إلى 

APP_DEBUG=false

وهنا لا تظهر إي مشاكل في المتصفح و إذا كنت تريد إيجاد الأخطاء تجدها في ملف logs

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

  • 0

حسب المعايير القياسية المتبعة عالمياً, يعتبر دائماً اي request صادر من متصفح عبر كتابة الرابط او الضغط على رابط هو request من نوع GET

اما الانواع الاخرى مثل POST و PATCH وغيرها فهي ناجمة عن الضغط على زر Submit ضمن HTML Forms 

لذلك فإما ان تكتب Route::get بدلاً من Route::post

او يمكنك انشاء دالة جديدة Route::get بنفس المسار ونفس دالة الـCallback وتبقي Route::post على حالها

او (الخيار الامثل) هو استخدام Route::any والذي يشير بقبول الـRequests من اي نوع سواء Post او Get او غيرها اذا كنت ترغب

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

  • 0

لقد ظهر هذا الخطأ لأنك تقوم  بعمل GET Request في مسار لا يقبل إلا  POST.

في المثال الذي تفضلت به لدينا

Route::post('/settings/update', 'SettingsController@update');

إدا ذهبنا إلى المسار http://localhost:8000/settings/update فسيظهر الخطأ MethodNotAllowedHttpException  لأن هذا المسار لا يقبل هذا النوع من Request

والحل هو إضافة مسار اخر يقبل GET Request لإظهار form تعديل الإعدادات مثلا هكدا 

Route::get('/settings/create', 'SettingsController@create');

 

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...