در این مقاله به بررسی و آموزش Route ها در لاراول میپردازیم.
Routing در بحث لاراول، یکی از مفاهیم اساسی و مهم محسوب میشود. عملکرد و وظیفه اصلی Route ها، هدایت و مسیردهی تمام request ها و درخواست های برنامه به یک کنترل کننده مناسب است.
Route فایل های پیش فرض
تمام route های مربوط به لاراول، به صورت پیشفرض درون فایل های موجود در دایرکتوری routes تعریف شده اند.
همزمان با ایجاد یک پروژه، دایرکتوری های Route نیز در آن پروژه ایجاد میشوند. در دایرکتوری route/web.php مجموعه ایی از فایل های route، جهت برقراری تعام و ارتباط در وب سایت تعریف شده است.
route های موجود در web.php به گروهی از میان افزار های تحت وب اختصاص یافته تا ویژگی و قابلیت هایی مثل وضعیت نشست یا session و حفاظت CSRF را فراهم کنند.
روت های تعریف شده در routes/api.php ، نیز به گروه های میان افزاری API، اختصاص داده شده اند که تاثیر زیادی در وضعیت آنها ندارند.
در اینجا ما عملیات روتینگ را با تعریف routes در فایل routes/web.api شروع میکنیم. برای دسترسی به روت هایی که در routes/web.php تعریف شده اند، باید آدرس URL آن در مرورگر وارد شود.
برای بهتر متوجه شدن مطالب بالا به مثال زیر توجه کنید:
تعریف فایل های route پیش فرض
<?php
Route::get(‘/’, function ()
{
return view (‘welcome’);
});
در قطعه کد بالا، route کلاسی است که متد استاتیک ()get را تعریف میکند. متد ()get شامل پارامترهای ‘/’ و ()function بسته مباشد. ‘/’ یک دایرکتوری روت تعریف میکند و ()function برای متد ()get عملکرد تعریف میکند.
در route بالا آدرس URL ، ‘/’; است بنابراین آدرسURL
localhost/laravelproject/public
در مرورگر وب وارد شده است.
خروجی :
view(‘welcome’) به عنوان یک متد برگردانده شده است پس خروجی بالا نمایی از خوش آمد گویی لاراول را نمایش میدهد.
در این مثال از یک URL دیگر استفاده میکنیم:
<?php
Route::get(‘/example’, function ()
{
return “Hello javaTpoint”;
});
در قطعه کد بالا، route در آدرس ‘/example’ تعریف شده، بنابراین لازم است که آدرس “localhost/laravelproject/public/example“ در مرورگر وب وارد شود.
خروجی :
حافظت CSRF در لاراول
فرم های html که به پست ها اشاره میکنند و Route های تعریف شده در فایل های route وب را اضافه یا حذف میکنند، باید دارای فیلد توکن یا رمز CSRF باشند.
اگر فیلد CSRF توکن نداشته نباشد، در نتیجه درخواست رد میشود.
<form method=”POST” action=”/profile”>
@csrf
…
</form>
روتر، route هایی را تعریف میکند که بتواند به افعال http زیر پاسخ بدهد:
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
گاهی اوقات ممکن است وضعیتی رخ بدهد که نیاز به ثبت یک روتر باشد تا به افعال http چندگانه پاسخ بدهد. این کار را میتوان با استفاده از متد ()match انجام داد.
گاهی اوقات هم ممکن است بخواهید یک node ثبت کنید که بتواند به تمام افعال http پاسخ بدهد. بنابراین از متد ()any استفاده می شود.
Route::match([‘get’, ‘post’], ‘/’, function () {
//
});
Route::any(‘/’, function ()
{
//
})
دو متد رایج route در لاراول
Redirect () method
متد ()Redirect برای هدایت کردن یک URL به یک URL دیگر است. این متد یک راه راحت و سریع تر برای حرکت از یک URL به یک URL دیگر فراهم میکند. با کمک این متد، دیگر نیازی به تعریف کامل route نیست.
به دو روش میتوان از متد ()redirect استفاده کرد:
روش اول: فراخوانی متد ()redirect در متد ()get
<?php
Route::get(‘hello’, function () {
return redirect(‘/’);
})
روش دوم: دسترسی مستقیم به متد ()redirect
<?php
Route::redirect(‘hello’,’/’);
در قطعه کد بالا هر دو Route ها از hello به دایرکتوری روت یعنی ‘/’ مسیردهی و هدایت شده اند.
View () method
متد ()View برای برگرداندن یک نما از URL دیگر است.
<?php
Route::get(‘/’, function () {
return view(‘welcome’);
});
<?php
Route::view(‘/’,’welcome’);