مسیردهی یا routing در لاراول
18
دی
مسیردهی یا routing در لاراول، در این مطلب با متدهای پرکاربرد مدیریت مسیرها یا routing در فریم ورک لاراول آشنا خواهیم شد.
ابتدایی ترین مسیرهای لاراول یک URI و یک بسته را می پذیرند و یک روش بسیار ساده و گویا برای تعریف مسیرها بدون فایل های پیکربندی مسیریابی پیچیده ارائه می دهند.
use Illuminate\Support\Facades\Route;
Route::get('/greeting', function () {
return 'Hello World';
});
در لاراول، 6 متد برای مدیریت مسیرها وجود دارد که در ادامه با آنها آشنا می شویم.
6 متد مدیریت مسیرها در لاراول:
/*
GET - Request a resource
POST - Create a new resource
PUT - Update a resource
PATCH - Modify a resource
DELETE - Delete a resource
OPTIONS - ASK the server which verbs aree allowed
*/
از این متد برای مسیرهای مشخص استفاده می شود. یعنی ما دقیقا می دانیم چه چیزی از طریق URL مرورگر قرار هست ارسال شود.
//GET
Route::get('/blog', [PostController::class, 'index']);
Route::get('/blog/1', [PostController::class, 'show']);
از این متد در زمانی که می خواهیم پردازش اطلاعات از چمله submit یک فرم به صورت امن انجام شود استفاده می کنیم.
به عنوان مثال در کدهای پایین، در روت create فرمی وجود دارد که با submit آن اطلاعات از طریق متد submit ارسال و در نهایت store یا ذخیره می شوند.
//POST
Route::get('/blog/create', [PostController::class, 'create']);
Route::post('/blog', [PostController::class, 'store']);
تعریف این دو متد شبیه یکدیگر هست، ابتدا رکوردی رو به همراه شناسه یا “id” آن دریافت می کنیم و به متد “edit” ارسال می شوند.
در مرحله بعد درخواست به متد patch جهت بروزرسانی ارسال می شود.
//PUROR PATCH
Route::get('/blog/edit/1', [PostController::class, 'edit']);
Route::patch('/blog/1', [PostController::class, 'update']);
از این متد همانطور که از نامش پیداست جهت حذف رکورد استفاده می کنیم.
در مثال زیر شماره 1 در مسیر blog به عنوان یک شناسه رکورد جهت حذف به متد “destroy” ارسال شده است.
//DELETE
Route::delete('/blog/1', [PostController::class, 'destroy']);
تا اینجا با متدهای اصلی مدیریت روتینگ در فریم ورک لاراول آشنا شدیم. حالا ممکنه سوال پیش بیاد که آیا ما می تونیم روت یا مسیری داشته باشیم که همزمان در خواست “GET” و “POST” براش ارسال بشه؟!
بله، این روت ها رو Multiple می نامند.
همانطور که در بالا گفتیم ما از طریق این نوع روت می تونیم با دریافت یک درخواست آن را به شکل GET و POST مدیریت کنیم.
//Multiple HTTP Verbs
Route::match(['GET', 'POST'], '/blog', [PostController::class, 'index']);
این روت نیز هرگونه درخواست GET یا POST ای را قبول خواهد کرد.
Route::any('/blog', [PostController::class, 'index']);
ما با ایتفاده از این روت متد یک فایل view را بازگشت می دهیم.
ما از طریق همین متد می توانیم داده هایی رو برای view ارسال کنیم.(خط کد 2)
Route::view('/blog', 'blog.index');
Route::view('/blog', 'blog.index', ['name' => 'Payam Laravel']);
حالا برای دریافت داده ارسالی در فایل view به شکل زیر عمل می کنیم.
{{ $name }}
برای تکمیل این مقاله “route model binding“را ادامه توضیح خواهم داد.
در یک تعریف ساده استفاده مستقیم از یک Model در روت رو route model binding می گن.
مثال زیر رو ببینیم:
Route::get('/listings/{id}', function ($id) {
return view('listing', [
'listing' => Listing::find($id)
]);
});
در این مثال ما یک شناسه یا “id” رو از روت دریافت می کنیم و در صورت وجود اطلاعاتش رو برمی گردونیم. یک روشش سنتی که در PHP Pure هم بدین شکل استفاده می کرددیم.
حالا اگر بخوایم از “route model binding” استفاده کنیم قطعه کد ما به شکل زیر خواهد شد:
Route::get('/listings/{listing}', function (Listing $listing) {
return view('listing', [
'listing' => $listing
]);
});
در اینجا ما خود model رو جایگزین id کردیم چون به هر حال مدل ایجاد شده به خودی خود شامل تمام اطلاعات جدولی که id ما در آن قرار داره و ما به دنبالش هستیم می باشد.
جمع بندی
در این مقاله سعی کردم توابع یا متدهای مسیردهی در فریم ورک لاراول توضیح بدم. امیدوارم این مطلب براتون مفید واقع شده باشه.
لطفا اگر نظر و پیشنهادی در خصوص مطالب و پیشبرد آنها دارید خوشحال میشم در قسمت دیدگاه ها مطرح بفرمایید.
هنوز حساب کاربری ندارید؟
ایجاد حساب کاربری