عید با تخفیفاتش! 35 درصد تخفیف رو تمامی دوره ها🔥 بزن بریم 💙
آموزش Routing در لاراول پارت 2

آموزش Routing در لاراول پارت 2

پارامتر ها در روت ها

در لاراول شما میتونید برای روت هاتون پارامتر ست کنید و بر اساس اون یک سری دیتا قابل تغییر دریافت کنید. برای مثال فرض کنید میخواهید یک ایدی کاربر دریافت کنید، خب نمی تونید برای هر کاربر یک روت درست کنید به جاش میاید یک روت با پارامتر درست میکنید و بر اساس اون یک سری کار ها انجام میدید، بریم یک مثال ببینینم:

1. تعریف روت با پارامتر ساده

برای ارسال یک مقدار به کنترلر یا بسته به پارامتر در همان مسیر:

Route::get('/user/{id}', function ($id) {
return "User ID: " . $id;
});
  • {id} نشان‌دهنده‌ی یک پارامتر اجباری است.
  • مقدار پارامتر در URL مانند: /user/5 ارسال می‌شود و مقدار 5 به $id اختصاص داده می‌شود.

2. تعریف پارامتر اختیاری

گاهی ممکن است بخواهید یک پارامتر اختیاری باشد. در این حالت از علامت ? استفاده می‌کنید و مقدار پیش‌فرض تعریف می‌کنید:

Route::get('/user/{name?}', function ($name = 'Guest') {
    return "Hello, " . $name;
});
  • URL: /user => خروجی: Hello, Guest
  • URL: /user/Ali => خروجی: Hello, Ali

3. محدود کردن مقادیر پارامتر با Regular Expression

می‌توانید مقادیر مجاز پارامتر را با یک الگوی مشخص محدود کنید:

Route::get('/user/{id}', function ($id) {
    return "User ID: " . $id;
})->where('id', '[0-9]+');
  • تنها مقادیری که شامل اعداد (0-9) باشند پذیرفته می‌شوند.
  • اگر مقدار دیگری (مثلاً /user/abc) ارسال شود، خطای 404 دریافت خواهید کرد.

برای چند پارامتر هم می‌توانید از آرایه استفاده کنید:

Route::get('/user/{id}/{name}', function ($id, $name) {
return "User ID: $id and Name: $name";
})->where([
'id' => '[0-9]+',
'name' => '[a-zA-Z]+'
]);

4. پارامترهای نام‌گذاری شده (Named Routes)

برای ارجاع به روت‌ها با نام و ارسال پارامتر:

Route::get('/post/{id}', [PostController::class, 'show'])->name('post.show');

// استفاده از مسیر
$url = route('post.show', ['id' => 10]);
// خروجی: /post/10

5. گروه‌بندی و استفاده از پارامترهای پیش‌فرض

در گروه‌بندی، می‌توانید از پارامترهای پیش‌فرض استفاده کنید:

Route::prefix('admin')->group(function () {
    Route::get('/user/{id}', function ($id) {
        return "Admin User ID: " . $id;
    })->where('id', '[0-9]+');
});

URL: /admin/user/5

6. پارامترهای مسیریابی در کنترلر

اگر از کنترلر برای هندل کردن مسیرها استفاده می‌کنید:

Route::get('/product/{id}', [ProductController::class, 'show']);

کنترلر:

class ProductController extends Controller
{
    public function show($id)
    {
        return "Product ID: " . $id;
    }
}

7. پاسخ به پارامترهای چندگانه

می‌توانید چند پارامتر را به روت ارسال کنید:

Route::get('/post/{id}/comment/{commentId}', function ($id, $commentId) {
    return "Post ID: $id, Comment ID: $commentId";
});

URL: /post/1/comment/42

8. استفاده از Binding سفارشی

اگر می‌خواهید به جای ارسال ID، مستقیماً یک مدل را دریافت کنید، می‌توانید از Route Model Binding استفاده کنید:

Route::get('/post/{post}', function (Post $post) { 
    return $post;
});

در این حالت لاراول به صورت خودکار Post::findOrFail($id) را اجرا کرده و مدل را بازیابی می‌کند.

0 نظر

برای ارسال نظر ابتدا ثبت نام یا ورود کنید 😉