شرح Routes في Laravel مع أمثلة عملية

بعد تثبيت Laravel بنجاح، يواجه المبتدئ سؤالًا محوريًا:
وهو كيف يعرف Laravel أي صفحة يجب عرضها عند زيارة رابط معيّن؟

الجواب يكمن في مفهوم Routes، وهو من أهم أساسيات Laravel، لأن أي طلب (Request) يمر عبره أولًا.
لذلك، فهم Routes بشكل صحيح يختصر عليك الكثير من الأخطاء لاحقًا.

علاوة على ذلك في هذا المقال، سنشرح ما هي Routes في Laravel، ما المشكلة التي تحلها، وكيف تستخدمها بأسلوب عملي ومنظم.


المشكلة: التعامل العشوائي مع الروابط في PHP

كما نعرف في PHP التقليدية، غالبًا يتم التعامل مع الروابط بهذا الشكل:

  • ملف لكل صفحة
  • منطق التطبيق والواجهة في نفس الملف
  • صعوبة تمرير البيانات
  • فوضى في تنظيم المشروع

نتيجةً لذلك، يصبح المشروع غير قابل للتوسّع، وأي تعديل في الروابط قد يكسر أجزاء أخرى من التطبيق.


الحل: نظام Routes في Laravel

ومن هنا Laravel يقدّم نظام Routing واضح ومركزي، يسمح لك بـ:

  • تعريف جميع الروابط في مكان واحد
  • ربط كل رابط بمنطق معيّن
  • تمرير البيانات بسهولة
  • حماية الروابط والتحكم فيها

ومن هنا يصبح التطبيق أكثر تنظيمًا وأسهل في الصيانة.


ما هي Routes في Laravel؟

الجواب Routes هي تعليمات تخبر Laravel:

  • ما الرابط الذي تم طلبه
  • أي كود يجب تنفيذه
  • وما الصفحة التي يجب عرضها

نظرًا لـأن جميع Routes الأساسية توجد داخل الملف:

routes/web.php

أول Route في Laravel

على سبيل المثال:

Route::get('/', function () {
    return view('welcome');
});

ونتيجة لذلك أنه:

  • عند زيارة الصفحة الرئيسية /
  • يتم عرض صفحة welcome.blade.php

أنواع Routes في Laravel

Route::get

يُستخدم لعرض الصفحات:

Route::get('/about', function () {
    return 'About Page';
});

Route::post

يُستخدم لإرسال البيانات:

Route::post('/contact', function () {
    return 'Form Submitted';
});

Route::put و Route::delete

تُستخدم غالبًا مع CRUD:

Route::put('/post/{id}', function ($id) {
    return $id;
});

Route::delete('/post/{id}', function ($id) {
    return $id;
});

Route Parameters (تمرير القيم داخل الرابط)

لماذا إنشاء Route لكل عنصر، بينما يمكنك استخدام Parameters:

Route::get('/user/{id}', function ($id) {
    return 'User ID: ' . $id;
});

ونتيجة لذلك Laravel يمرّر القيمة تلقائيًا للـ function.


Route Parameters مع شروط

يمكنك تحديد نوع القيمة:

Route::get('/user/{id}', function ($id) {
    return $id;
})->where('id', '[0-9]+');

Route Naming (تسمية Routes)

تسمية Routes تساعد في:

  • تجنب الروابط الثابتة
  • تسهيل التعديل لاحقًا

على سبيل المثال:

Route::get('/dashboard', function () {
    return view('dashboard');
})->name('dashboard');

وبذلك الاستخدام داخل Blade يصبح:

route('dashboard')

Route Groups (تنظيم Routes)

Group مع prefix

Route::prefix('admin')->group(function () {
    Route::get('/users', function () {
        return 'Admin Users';
    });
});

الرابط يصبح:

/admin/users

Group مع middleware

Route::middleware('auth')->group(function () {
    Route::get('/profile', function () {
        return 'Profile';
    });
});

ربط Route بـ Controller (الطريقة الصحيحة)

بدل كتابة منطق داخل Route:

Route::get('/posts', [PostController::class, 'index']);

وهذا الأسلوب هو الأفضل في المشاريع الحقيقية.


أخطاء شائعة في Routes

Route not defined

السبب: نسيان تسمية Route أو خطأ في الاسم
الحل: التأكد من الاسم واستخدام route:list


Page not found 404

السبب: Route غير معرّف
الحل: مراجعة web.php وترتيب Routes


Route cache issues

الحل:

php artisan route:clear

متى تحتاج فهم Routes بعمق؟

  • عند بناء CRUD
  • عند إنشاء APIs
  • عند حماية الصفحات
  • عند تنظيم مشروع كبير

لذلك، Routes ليست مجرد روابط، بل قلب التطبيق.


مقالات ذات صلة

اترك رد