💡 مشاوره

مارک پلاس

تکنولوژی نوین اینترنتی

نحوه استفاده از Route Parameters

دسته‌بندی‌ها

نحوه استفاده از Route Parameters

🧭 Route Parameters در Laravel — راهنمای کامل



📌 Route Parameter چیست؟

Route Parameter به ما اجازه می‌ده تا قسمت‌هایی از URL رو به صورت متغیر تعریف کنیم و اون‌ها رو داخل کنترلر یا تابع مسیریابی دریافت کنیم.

🎯 مثال ساده:

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

حالا وقتی وارد آدرس /user/42 بشی، خروجی می‌شه:

pgsql
User ID is: 42

🧩 پارامترهای اجباری

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

هر چیزی داخل {} به‌عنوان پارامتر اجباری شناخته می‌شه.


🛡️ محدود کردن مقدار پارامتر (Regular Expression)

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

فقط اعدادی مثل /user/123 معتبر هستن.


🧵 چند پارامتر

php
Route::get('/post/{category}/{slug}', function ($category, $slug) { return "Category: $category - Slug: $slug"; });

🧊 پارامترهای اختیاری (Optional Parameters)

php
Route::get('/user/{name?}', function ($name = 'Guest') { return "Hello, $name"; });

حالا هم /user/Ali کار می‌کنه و هم /user.


💡 نکته:

اگر پارامتر اختیاری باشه، باید مقدار پیش‌فرض براش در تابع مشخص کنی.


🧠 استفاده در Controller

1. تعریف Route:

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

2. متد در کنترلر:

php
public function show($id) { $product = Product::findOrFail($id); return view('product.show', compact('product')); }

📦 ارسال پارامتر با نام Route

اگر برای route اسم بذاری، می‌تونی با route() پارامتر رو هم بفرستی:

php
Route::get('/blog/{slug}', [BlogController::class, 'show'])->name('blog.show');
blade
<a href="{{ route('blog.show', ['slug' => $post->slug]) }}"> {{ $post->title }} </a>

🚧 whereMultiple – محدودیت روی چند پارامتر:

php
Route::get('/order/{id}/{type}', function ($id, $type) { return "$type Order #$id"; })->where([ 'id' => '[0-9]+', 'type' => 'asc|desc' ]);

🛠️ Route Model Binding (پیشرفته)

لاراول بهت اجازه می‌ده به‌جای دریافت ID، مستقیم مدل رو بگیری:

php
Route::get('/user/{user}', function (App\Models\User $user) { return $user->name; });

اگر user با ID داده شده پیدا نشه، 404 می‌فرسته.


✨ جمع‌بندی

نوع پارامترمثالتوضیح
اجباری/user/{id}باید مقدار داشته باشه
اختیاری/user/{name?}مقدار پیش‌فرض می‌گیره
محدود شده->where('id', '[0-9]+')regex روی پارامتر
چندتایی/cat/{id}/post/{slug}ترکیب پارامترها
مدل‌ بیندینگ{user}User $userدریافت مستقیم مدل

محتوای مرتبط

پست‌های مرتبط