ارجاع یک مسیر به یک کنترلر
موضوعات
- ارجاع یک مسیر به یک کنترلر
- ارجاع یک مسیر به یک کنترلر با پارامتر
- ارجاع یک مسیر به کنترلر با پارامتر اختیاری
- اعمال فیلتر روی پارامترهای ورودی
- گروهبندی مسیرهای یک کنترلر
🔄 ارجاع یک مسیر به یک کنترلر
- تعریف کنترلر
namespace App\Http\Controllers;
class calcController extends Controller
{
function sum(){
return 2+6;
}
}
- تعریف روتر
Route::get('/sum/', [calcController::class, 'sum']);
- اجرا
http://localhost:8000/sum/
🔄 ارجاع یک مسیر به یک کنترلر با پارامتر
در لاراول بایند شدن پارامترها به متد داخل کنترلر بصورت خودکار انجام میشود اما باید توجه کرد که تعداد پارامترها در روت با تعداد پارامترها در متد یکی باشد
- تعریف کنترلر
namespace App\Http\Controllers;
class calcController extends Controller
{
function sum(string $num1,string $num2){
return $num1+$num2;
}
}
- تعریف روتر
Route::get('/sum/{num1}/{num2}', [calcController::class, 'sum']);
- اجرا
http://localhost:8000/sum/2/6
ارجاع یک مسیر به کنترلر با پارامتر اختیاری
با قرار دادن علامت ؟ در
- تعریف کنترلر
namespace App\Http\Controllers;
class calcController extends Controller
{
function sum(string $num1,string $num2=6){
return $num1+$num2;
}
}
- تعریف روتر
Route::get('/sum/{num1}/{num2?}', [calcController::class, 'sum']);
- اجرا
http://localhost:8000/sum/2
پارامتر num2 اختیاری است و در صورتکیه ارسال نشود پیش فرض 6 جایگزین خواهد شد
اعمال فیلتر روی پارامترهای ورودی
Route::get('/sum/{num1}/{num2}', [calcController::class, 'sum'])->whereNumber(num1)->whereNumber(num2)
Route::get('/sum/{num1}/{num2}', [calcController::class, 'sum'])->whereNumber([num1,num2])
گروه بندی ارجاع به یک کنترلر
در نظر داشته باشید میخواهیم سیستم یک ماشین را پیاده سازی کنیم این ماشین میتواند روشن شود خاموش شود و گاز بدهد و ترمز کند
ابتدا یک کنترلر با نام carتعریف میکنیم سپس با استفاده از مسیرهای مختلف و مدل mvc انر اجرا میکنیم
| توضیحات | route |
| برای روشن شدن ماشین | http://localhost/car/strat |
| برای خاموش شدن ماشین | http://localhost/car/stop |
| برای گاز خوردن | http://localhost/car/gas |
| برای ترمز ماشین | http://localhost/car/break |
ایجاد روترهای مرتبط
Route::get('/car/start',[carController::class,'start']);
Route::get('/car/stop',[carController::class,'stop']);
Route::get('/car/gas',[carController::class,'gas']);
Route::get('/car/break',[carController::class,'break']);
با استفاده از گروه بندی میتوانیم کد را ساده تر کنیم زیرا همه مسیر های بالا با car شروع می شوند
Route::controller(carController::class)->group(function(){
Route::get('/car/start','start');
Route::get('/car/stop','stop');
Route::get('/car/gas','gas');
Route::get('/car/break','break');
}
تمام مسیرهای مرتبط با ماشین در یک متمرکز میشوند
نام کنترلر فقط یک بار مشخص میشود
خوانایی کد افزایش مییابد