در این جلسه مسیریابی برنامه ها را بررسی می کنیم و روش اجرای درخواست های کاربر را توضیح می دهیم.
مسیریابی پایه
مسیریابی پایه در لاراول مکانیزمی است که درخواست شما را به یک کنترل کننده مناسب هدایت می کند. مسیر برنامه را می توان در فایل routes/web.php تعریف کرد. در اینجا نحو کلی مسیر برای هر یک از درخواست نشان داده شده است.
Route::get('/', function () {
return 'Hello World';
});
Route::post('/foo/bar', function () {
return 'Hello World';
});
Route::put('/foo/bar', function () {
//
});
Route::delete('/foo/bar', function () {
//
});
برای درک چگونگی پردازش درخواست ها و پاسخگویی می توانیم از مثال زیر استفاده می کنیم که به طور پیش فرض هنگام نصب لاراول نوشته شده است.
مثال:
routes/web.php
Route::get('/', function () {
return view('welcome');
});
resources/view/welcome.blade.php
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<head>
<title>Laravel
</title>
<link href = "https://fonts.googleapis.com/css?family=Lato:100" rel = "stylesheet" type = "text/css">
<style>
html, body {
height: 100%;
}
body {
margin: 0;
padding: 0;
width: 100%;
display: table;
font-weight: 100;
font-family: 'Lato';
}
.container {
text-align: center;
display: table-cell;
vertical-align: middle;
}
.content {
text-align: center;
display: inline-block;
}
.title {
font-size: 96px;
}
</style>
</head>
<body>
<div class = "container">
<div class = "content">
<div class = "title">Laravel 5</div>
</div>
</div>
مکانیزم مسیریابی لاراول در تصویر زیر نشان داده شده است:
حالا جزئیات مراحل را توضیح می دهیم :
مرحله اول- ابتدا نیاز است تا URL ریشه برنامه را در نوار آدرس مرورگر قرار داده و اجرا کنیم.
مرحله دوم – URL درخواستی با توجه به پارامترهای تعیین شده، به متد مناسبی از کلاس Route، در فایل web.php تطبیق داده می شود. و در داخل این تابع پاسخی برای درخواست برگردانده می شود.
مرحله سوم – در مثال فوق، اگر درخواست بدون هیچگونه پارامتری (http://localhost:8000) فرستاده شود تابع فایل الگوی resources/views/welcome.blade.php را فراخوانی می کند. توجه کنید که تابع کمکی view فایل الگوی تعیین شده با پسوند blade.php را فراخوانی می کند. این فایل الگو شامل طراحی HTMLاست که در پاسخ به درخواست نمایش داده خواهد شد.
پارامترهای مسیریابی
اغلب در برنامه، ما قصد داریم پارامترهایی به همراه URL به برنامه بفرستیم . برای انجام این کار، باید کد را در فایل web.php را تغییر دهیم. دو راه وجود دارد که ما می توانیم پارامترهای منتقل شده با URL را مرود استفاده قرار دهیم.
- پارامترهای مورد نیاز
- پارامترهای اختیاری
پارامترهای مورد نیاز
این پارامترها باید در URL باشد. به عنوان مثال، ممکن است قصد داشته باشید ID را از URL وارد کنید تا کاری با آن شناسه انجام دهید. در اینجا کدگذاری نمونه برای فایل routes.php برای این منظور است.
Route::get('ID/{id}',function($id){
echo 'ID: '.$id;
});
هر پارامتری که بعد از ریشه آدرس (http://localhost:8000/ID/5) منتقل می کنیم، آن را در $id ذخیره می کنیم و می توانیم از آن پارامتر برای پردازش بیشتر استفاده کنیم، اما در اینجا آنرا نمایش می دهیم. ما می توانیم آن را به نمایش یا کنترل برای انتقال بیشتر منتقل کنیم.
پارامترهای اختیاری
برخی از پارامترهایی که ممکن است در نشانی اینترنتی وجود داشته باشند و یا ممکن است وجود نداشته باشند و در چنین مواردی ما می توانیم از پارامترهای اختیاری استفاده کنیم. حضور این پارامترها در URL ضروری نیست. این پارامترها با نام «?» بعد از نام پارامترها نشان داده می شوند. در اینجا کدگذاری نمونه برای فایل routes.php برای این منظور است.
Route::get('/user/{name?}',function($name = 'Virat'){
echo "Name: ".$name;
});
مثال :
web.php
<?php
// First Route method – Root URL will match this method
Route::get('/', function () {
return view('welcome');
});
// Second Route method – Root URL with ID will match this method
Route::get('ID/{id}',function($id){
echo 'ID: '.$id;
});
// Third Route method – Root URL with or without name will match this method
Route::get('/user/{name?}',function($name = 'Virat Gandhi'){
echo "Name: ".$name;
});
?>
مرحله 1 – در اینجا، ما 3 مسیر را با روش های مختلف برای اهداف مختلف تعریف کردیم. اگر ما URL زیر را اجرا کنیم، اولین روش را اجرا خواهیم کرد.
http://localhost:8000
مرحله 2 – پس از اجرای موفق URL، خروجی زیر را دریافت خواهید کرد.
مرحله 3 – اگر ما URL زیر را اجرا کنیم، روش دوم را اجرا خواهد کرد و شناسه argument/parameter به متغیر $id منتقل می شود.
http://localhost:8000/ID/5
مرحله 4 – پس از اجرای موفق URL، خروجی زیر را دریافت خواهید کرد
مرحله 5 – اگر URL زیر را اجرا کنیم، روش 3 را اجرا می کنیم و نام آرگومان/پارامتر اختیاری به متغیر $name منتقل می شود. آخرین بحث “Virat” اختیاری است. اگر آن را حذف کنید، از نام پیش فرض استفاده می شود که ما در عملکرد به عنوان “Virat Gandhi” منتقل شده ایم.
http://localhost:8000/user/Virat
مرحله 6 – پس از اجرای موفق URL، خروجی زیر را دریافت خواهید کرد
توجه – عبارات منظم نیز می تواند برای مطابقت با پارامترها استفاده شود.