روتینگ (Routing) در لاراول یکی از اجزای کلیدی این فریمورک برای ایجاد مسیرها و تعیین دسترسی کاربران به بخشهای مختلف اپلیکیشن است. با استفاده از Route میتوانید مشخص کنید که کاربر با وارد کردن هر URL به کدام کنترلر و یا متد دسترسی پیدا کند و همچنین دستورات خاصی را در پاسخ به درخواستهای کاربر اجرا کنید. در این مقاله با مهمترین اصول و نکات روتینگ در لاراول آشنا میشویم.
1. تعریف Route ساده
لاراول از Route ها برای مسیردهی درخواستهای کاربر به بخشهای مختلف اپلیکیشن استفاده میکند. تعریف یک Route ساده به این صورت است:
Route::get('/home', function () {
return view('home');
});در این مثال، هنگامی که کاربر به آدرس /home دسترسی پیدا میکند، ویوی home نمایش داده خواهد شد.
2. انواع روشهای درخواست HTTP
لاراول از تمامی روشهای HTTP از جمله GET، POST، PUT، DELETE و PATCH پشتیبانی میکند. هر کدام از این روشها را میتوان با Route های مختلف ترکیب کرد:
Route::post('/submit', [FormController::class, 'submit']);
Route::put('/update', [UserController::class, 'update']);
Route::delete('/delete', [UserController::class, 'delete']);3. پارامترهای پویا در Route ها
میتوانید از پارامترهای پویا در URL ها استفاده کنید تا اطلاعات بیشتری را از کاربر دریافت کنید. برای مثال:
Route::get('/user/{id}', function ($id) {
return "User ID: " . $id;
});همچنین میتوانید پارامترهای اختیاری تعریف کنید:
Route::get('/user/{name?}', function ($name = 'Guest') {
return "Hello, " . $name;
});4. نامگذاری Route ها
نامگذاری Route ها به شما کمک میکند تا به جای URL، از نامها برای مسیردهی استفاده کنید. این کار خوانایی کد را افزایش میدهد:
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');اکنون میتوانید به راحتی از این Route با نام آن استفاده کنید:
return redirect()->route('dashboard');5. گروهبندی Route ها
لاراول امکان گروهبندی Route ها را فراهم میکند. این قابلیت به شما اجازه میدهد تا تنظیماتی مانند میدلور (middleware) و پرپیکشها را به صورت گروهی روی چندین Route اعمال کنید:
Route::prefix('admin')->middleware('auth')->group(function () {
Route::get('/dashboard', [AdminController::class, 'dashboard']);
Route::get('/settings', [AdminController::class, 'settings']);
});6. استفاده از میدلور (Middleware) در Route ها
میدلورها فیلترهایی هستند که قبل یا بعد از درخواستها اجرا میشوند و میتوانند برای اعتبارسنجی، مدیریت دسترسی و … استفاده شوند:
Route::get('/profile', [UserController::class, 'profile'])->middleware('auth');7. کنترل کنندههای Resource
لاراول به شما اجازه میدهد که کنترلرهای Resource ایجاد کنید. این کنترلرها شامل مجموعهای از متدهای پیشفرض هستند که برای عملیات CRUD مورد استفاده قرار میگیرند:
Route::resource('posts', PostController::class);این کد مجموعهای از Route ها را به صورت خودکار برای PostController ایجاد میکند که شامل index، create، store، show، edit، update و destroy است.
8. روتینگ API
لاراول روتینگ API را نیز پشتیبانی میکند که برای اپلیکیشنهای RESTful مناسب است. این Route ها در فایل api.php تعریف میشوند:
Route::get('/posts', [PostController::class, 'index']);
Route::post('/posts', [PostController::class, 'store']);این فایل Route های خود را در فضای URL api/ در دسترس قرار میدهد، مانند /api/posts.
9. محدودیتها و Regular Expression در Route ها
لاراول امکان استفاده از Regex برای محدود کردن پارامترها را فراهم میکند:
Route::get('/user/{id}', function ($id) {
return "User ID: " . $id;
})->where('id', '[0-9]+');نتیجهگیری
Route ها در لاراول بخش مهمی از مسیردهی درخواستها و مدیریت رفتار اپلیکیشن شما هستند. از Route های ساده تا کنترلرهای Resource و API Route ها، لاراول امکانات وسیعی را برای مسیردهی و مدیریت درخواستهای کاربر در اختیار شما قرار میدهد. با استفاده از این امکانات، میتوانید به راحتی اپلیکیشنهای پیچیده و کاربردی بسازید.
