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

كيفية عمل مسار مخصص يعمل بدل صفحة 404 في لارافيل Laravel؟

Emad Saif

السؤال

في لارافيل Laravel، عندما أدخل إلى أي صفحة غير موجودة في المسارات routes الخاصة بالتطبيق يتم عرض صفحة الخطأ 404، الآن أريد أن يتم تنفيذ دالة مخصصة في أحد المتحكمات controllers بدل من عرض صفحة 404،  كيف أقوم بعمل مسار يعمل في حالة لم يعمل أي مسار آخر (fallback route)؟

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

Recommended Posts

  • 2

يوفر لارافيل Laravel هذه الميزة من خلال التابع Route::fallback مباشرة، والذي يستقبل دالة تحتوي على عدد من المسارات بالشكل التالي:

Route::fallback(function () {
    //
});

بهذا الشكل سوف تعمل المسارات المحددة في هذا التابع فقط في حالة لم يعمل أي مسار آخر خارجه في الملف routes/web.php

ملاحظة: يجب أن يتم كتابة التابع Route::fallback في نهاية الملف routes/web.php، حيث أن كل المسارات التي تليه لن تعمل.

توثيق التابع Route::fallback في موسوعة حسوب.

تستطيع كذلك إستعمال التابع where لكي يتم تنفيذ المسار بشكل دائم في حالة لم يعمل أي مسار يسبقه:

Route::get('{any?}', function ($any = null) {
    // ...
})->where('any', '.*');

كذلك إن كان لديك دالة واحدة تريدها أن تعمل بغض النظر عن نوع الطلب request method يمكنك إستخدام التابع Route::any وإضافة دالة واحدة إليه على النحو التالي:

// Laravel 6 & 7
Route::any('/{any}', 'MyController@myMethod')->where('any', '.*');

// Laravel 8 & 9
Route::any('/{any}', [MyController::class, 'myMethod'])->where('any', '.*');

 

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

  • 1

في حال أردت تخصيص تصميم صفحة 404 فقط يمكنك ذلك أولا بإنشاء ملف عرض blade ضمن المسار التالي ضمن مشروعك:

resources/views/errors/404.blade.php

وتخصيص تصميمها ومحتواها بما يناسب مشروعك، مثال

<h1>404</h1>
<p>الصفحة المطلوبة غير موجودة تأكد من صحة الرابط</p>

 

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

  • 0

يوفر لارافل إمكانية تخصيص صفحات خطأ لمختلف HTTP status codes حيث تحتاج فقط إلى إنشاء صفحة باسم رمز الخطأ(404، 500، ..)ضمن المسار resources/views/errors/ ومن ثم لعرض الخطأ:

<h2>{{ $exception->getMessage() }}</h2>

أو تستطيع إنشاء صفحة لعرض سلسلة متتالية من  HTTP status codes، مثلاً تستطيع إنشاء صفحة باسم 4xx.blade.php أو 5xx.blade.php فسيتم عرض صفحة 4xx من أجل أي رمز خطأ يبدأ ب 4

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...