Routing و مسیریابی در لاراول

قهرمان اول لاراول – Routing

قهرمان اول لاراول – Routing

مسیریابی لاراول

در این آموزش قصد داریم تا Routing برای فریم ورک لاراول توضیح بدیم . اما اول از اون بهتره بدونیم که مسیر درخواست ها و پاسخگویی لاراول چطوریه.

ساختار چرخه ی درخواست در لاراول (MVC Request Life Cycle)

چرخه ی درخواست و پاسخگویی در فریم ورک لاراول
چرخه ی درخواست و پاسخگویی در فریم ورک لاراول

همونطور که مشاهده می کنین هر درخواست که توسط کاربر برای سرور ارسال میشه:

ابتدا وارد Routing شده سپس با توجه به درخواست به Controller مشخص شده فرستاده میشه . اگر نیاز به تعامل با دیتابیس وجود داشته باشه Controller از طریق Model با دیتا بیس تعامل میکنه.

نتایج حاصل رو از Model دریافت میکنه و در نهایت اونا رو برای View می فرسته و View برای کاربر قابل مشاهده خواهد بود .

Routing (مسیریابی)

روت بدی های همون Routing یا به فارسی مسیریابی به لطف موتور routing لاراول خیلی آسون شده در حالی که این مبحث برای خیلی از توسعه دهنده ها یک مصیبت حساب میشه ولی به لطف لاراول دیگه از این چیزا خبری نیست.

فایل مربوط به Routing رو میتونین از مسیر زیر پیدا کنید :

root/routes/web.php

اگر این فایلو باز کنید با چینین منظره ای روبه رو میشین :

<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
    return view('welcome');
});

اما توضیحات : اگر دقت کنید هر روت یا همون مسیر از سه بخش تشکیل شده . شکل بالای روت که می بنید بنا بر خود لاراول ، مسیربای ساده نام داره .

Route::requste_type(‘URL’,’CALLBACK’);

برای یک مثال :

Route::get(‘/posts’,callback_function);

url یا آدرس اینترنتی یک Route

اول بخش دومو میگیم بعد چون که اینجوری راحت تر قابل فهم میشه واسه ما . بخش دوم آدرس روت یا همون مسیر رو مشخص میکنه.

توی مثال بالا دقت کنید مسیر /post مشخص شده یعنی هر وقت درخواستی به شکل زیر بیاد روت بالا عمل خواهد کرد.

larave.dev/posts

الان شما می تونین این مسیر رو به هر شکلی که بخوایین تعویض کنید برای مثال :

laravel.dev/category/posts

که این روت به شکل زیر میشه .

Route::get('/category/posts',callback)

آما همونطور که میبنید این روت ها و مسیرها به صورت استاتیک هستش اما چطور میشه یک روت داینامیک درست کرد . به مثال زیر توجه کنید .

Route::get('/category/posts/{id}',callback)

اگر به مثال بالا توجه کنید متوجه {id} میشد . این به این معناس که بعد از این روت استاتیکی که معلوم شده هر چی اومد توی متغییر ایدی ذخیره کن و برای ما بفرست . برای مثال :

larave.dev/category/posts/23

Route::get('/category/posts/{id}',function($id){
return $id;
})

توی این مثال ای روت داینامیک عدد 23 رو بر میگردونه و شما متوجه میشین که چطور میشه به پارامتر های ارسالی از get رو دسترسی پیدا کرد. مثال بعدی :

larave.dev/category/posts/23/first-post

Route::get('/category/posts/{id}/{url}',function($id , $url){
return $id . ' - ' $url;
})

توی این مثال عدد 23 در متغییر $id قابل دسترسی خواهد بود و first-post در متغییر $url .

Callback Function یا عملگر یک Route

بخش سوم callback . در بخش سوم باید معلوم کنید که بعد از تشخیص روت باید چه عملی اتفاق بیوفته .توی مثال اول :


Route::get('/', function () {
    return view('welcome');
});

روت بعد از تشخیص سریعا View به اسم wellcome رو برمیگردونه یا میتونه یک کدو انجام بده یا کنترلی رو اجرا کنه . برای مثال :

Route::get('foo', function () {
    return 'Hello World';
});

توی این مثال عبارت hello word نشان داده خواهد شد و اما برای ارسال به کنترل دیگه ای :

Route::get('/user', 'UserController@index');

در این روت کنترل UserController رو درخواست کرده و متد index رو خواسته . البته ما اینجا فقط این قسمت رو به صورت ساده توضیح میدیم و در قسمت controller ها این مبحث مفصل بحث خواهد شد.

Route type یا نوع درخواست ارسالی از طرف کاربر برای Route

بخش اول هر روت که نوع درخواست روت نشون میده .

مثلا : get که توی مثال بالا می بینید . یعنی هر وقت دستوری از نوع get به سرور با مشخصات که تعیین شده برسه این روت اعمال میشه.

خش اول هر روت که نوع درخواست روت نشون میده . مثلا : get که توی مثال بالا می بینید . یعنی هر وقت دستوری از نوع get به سرور با مشخصات که تعیین شده برسه این روت اعمال میشه.

اما چند نوع درخواست داریم.

  • Route::get($uri, $callback);
  • Route::post($uri, $callback);
  • Route::put($uri, $callback);
  • Route::patch($uri, $callback);
  • Route::delete($uri, $callback);
  • Route::options($uri, $callback);

امروزه توی مرورگرهای مدرن فقط get , post رو میتونیم داشته باشیم ولی لاراول تونسته این روت ها رو با ترفندی برای ما ایجاد کنه .

این نوع روت های مختلف باعث میشه تا ما ادرس کمتری داشته باشیم و باعث سردرگمی ما توی پروژه های بزرگ نمیشه .مثلا:

  • Route::get('posts', $callback);
    • برای گرفتن تمامی پست ها
  • Route::get('posts/{id}', $callback);
    • برای گرفتن یک پست
  • Route::post('posts', $callback);
    • برای ایجاد کردن پست جدید
  • Route::put('posts/{id}', $callback);
    • برای اپدیت کردن یک پست
  • Route::delete('posts/{id}', $callback);
    • برای حدف یک پست

انواع دیگر Routing

علاوه بر انواع روت های گفته شده انواع دیگری از روت های دیگر هم وجود دارد که فقط اینجا ذکرشون میکنیم ، زیرا توضیحشون هم خیلی وقت گیره و در این سطح استفاده نمیشه.

البتع سعی میکنم توی آموزش ساخت وبلاگ از این نوع Route ها هم استفاده بشه تا شما بیشتر متوجه اونا بشین .

روت با ساختار match
Route::match(['get', 'post'], '/', function () {
    //
});
روت با ساختار any
Route::any('/', function () {
    //
});
روت با ساختار redirect
Route::redirect('/here', '/there');

Route::redirect('/here', '/there', 301);

Route::permanentRedirect('/here', '/there');
روت با ساختار View
Route::view('/welcome', 'welcome');

البته همچنان انواع روت های دیگری هم وجود دارن که بهشون اشاره نشد ولی سعی میشه که توی آموزش ها ازشون استفاده بشه .

البته در صورت تمایل شما برای اطلاعات بیشتر میتونین از لینک زیر این مبحثو بیشتر مطالعه کنید .

https://laravel.com/docs/6.0/routing

تمرین و نتیجه گیری

الان میخوایین برای شروع اولین روت خودمونو درس کنیم . ابتدا باید روت اول سایتو عوض کنیم .


Route::get('/', function () {
    return view('frontpage');
});

همونطور که متوجه شدین اسم view رو تغییر دادیم به frontpage یعنی در صورت درخواست روت اولیه یا همان وب سایت اصلی باید view که برای صفحه frontpage هست رو نشون بده.

برای ساخت این view از مسیر زیر عمل میکنید.

root/master/resources/views

بعد توی همون پوشه views یک فایل به اسم frontpage.blade.php رو میسازین.

توجه کنید که پسوند .blade.php رو باید رعایت کنین تا لاراول بتونه template engine رو استفاده کنه.

برای این که این روت خالی نمونه از یک قالب آماده بوت استرپ استفاده می کنیم که من قبلا براتون توی این فایل txt گذاشتم .

کافی شما فقط محتویات این فایلو توی view جدیدی که درس کردین کپی کنین و تمام.

پست های مرتبط

قهرمان اول لاراول – کنترلر ها (Controllers)

قهرمان اول لاراول – کنترلر ها (Controllers)

قهرمان اول لاراول - کنترلرها (Controllers) در این قسمت قصد داریم تا به بررسی کنترل ها و ایجاد و نحوه ی اتصال آن ها به... .

نوشته شده در
قهرمان اول لاراول – پیادسازی دیتابیس و احراز هویت

قهرمان اول لاراول – پیادسازی دیتابیس و احراز هویت

قهرمان اول لاراول - پیاده سازی دیتابیس و احراز هویت این پست قسمت دوم از سری آموزش های لاراول می باشد . در این پست... .

نوشته شده در

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

با عضویت در خبرنامه از آخرین اخبار مطلع شوید