مسیر دهی یا routing لاراول چیست؟آموزش ساخت route در laravel

6 2 نظر
دپارتمان: آموزش طراحی سایت

مسیر دهی یا routing لاراول چیست؟ در برنامه هایی که با فریمورک لاراول توسعه داده شده، درخواست های فرستاده شده از url را قسمت های خاصی از برنامه بررسی می کنند. اینکه کدام درخواست در کدام قسمت از برنامه باید بررسی بشود را روترها مشخص می کنند. در واقع مسیریابی درخواست ها را روترها انجام می دهند. اگر درخواستی داشته باشیم که مسیری برای آن وجود نداشته باشد با خطای 404 مواجه می شویم. تصویر زیر نمونه خطای 404 را که از سایت آکادمی آی تی گرفته ایم را نشان می دهد.

 

خطای 404

 

ساخت یک route در لاراول 

تمامی روت های یک پروژه در فایل های web.php و api.php در پوشه ی routes قرار دارند. برای روت های فایل web.php به صورت خودکار، میدلورهای session و csrf اعمال می شوند. این میدلورها در لاراول، در روت های فایل api.php اعمال نمی شوند، به خاطر اینکه  روت api ها در این فایل مشخص می شوند و درخواست هایی که با api ها انجام می شوند، نیازی به این میدلورها ندارند. قطعه کد زیر ساختار یک روت پیش فرض را نشان می دهد. با قرار دادن این کد در فایل web.php، عبارت "academyit.net" چاپ می شود. 

 


 


Route ::get('/' ' function (){
    return response('academyit.net');
});

 

متد های کلاس روت، نوع روت را مشخص می کنند. در مثال زیر دو پارامتر برای متد get تعریف شده که اولی برای درخواستی به مسیر /articles و پارامتر دوم تابعی که دستوری را در مسیر مشخص شده برای درخواست اجرا می کند.

 


Route ::get('/articles' ' function (){
 Echo “academyit.net”;
});

 

متد های routing در لاراول 

روترها علاوه بر متد get از متدهای دیگری هم استفاده می کنند. که نحوه ی استفاده از هر کدام در کلاس route به صورت زیر است.
 


Route :: post( '/$url' ' '$action' );
Route :: put( '/$url' ' '$action' );
Route :: delete( '/$url' ' '$action' );
Route :: get( '/$url' ' ' $action' );
Route :: patch( '/$url' ' '$action' );
Route :: aptions( '/$url' ' '$action' );

 

برای روتر هایی که از متد های put، post وdelete استفاده می کنند. باید توکن csrf نیز همراه با فرم فرستاده شود. فرمی که  داده ها را از صفحات html از طریق متد ارسال می کند. این token امنیت را برای حملات ناشی از باگ csrf برقرار می کند. برای استفاده از این token در فرم، csrf را همراه با @ به صورت @csrf ارسال می کنند. هم چنین فرم های html، اگر روت از متد delete استفاده کرده باشد متد های patch، put و delete را پشتیبانی نمی کنند. برای حل این مشکل در فرم ها به صورت زیر عمل کنید.

 

مسیردهی در لاراول

 

به جای  متد delete از متد پست، به علاوه  name =”_method” استفاده می کنیم. همچنین به خاطر اینکه از متد پست به جای متد دیلیت استفاده کرده ایم، همراه توکن csrf متدی را با پارامتر delete به صورت @method(‘delete’) ارسال می کنیم.
یک سری روت هایی هم هستند که نیاز به متد های بیشتری دارند یا روت هایی وجود دارند که  مهم نیست از چه نوع متدی استفاده شود. برای این کار فریمورک لاراول دو نوع دیگر از مسیردهی تحت عنوان match و any که تعریف کرده است استفاده می کند. از any برای دسترسی به هر متدی که لازم باشد و از match برای متدهایی که در روت تعریف شده اند بکار می برند. هر کدام از مسیر دهی های any و match به صورت زیر تعریف و استفاده می شوند.
 

 


Route:: any ('/'' function () {
//
});
Route:: match (['get'' 'put'' 'post']' '/' ' function () {
//
});

 

Redirect کردن مسیر 

متدی  تحت عنوان redirect برای هدایت کردن درخواست ها به مسیر دیگر وجود دارند. برای درخواست هایی که به from مسیردهی شده اند به مسیر to هدایت می شوند. که به صورت زیر به کار برده می شود.

 

Route :redirect ('/from' ' 'to' ); 

 

 

اگر شماره کد صفحه ی هدایت شده مهم باشد پارامتر سومی را برای شماره کد در کلاس روت به صورت زیر تعریف می کنیم.

 

Route :: redirect ( '/from' ' 'to' ' '301' ); 

 

 

کد 301 برای هدایت دائمی تعریف شده است. برای درخواست هایی که هدایت دائمی دارند بهتر است از کد زیر استفاده شود.

 

Route :: permanentRedirect('/from' ''to');

 

489

سبد خرید

سبد خرید شما خالی است.

دریافت مشاوره رایگان