مقالات

لاراول: مقدمه ای بر مسیریابی لاراول

مسیریابی در لاراول به کاربران اجازه می دهد تا تمام درخواست های برنامه را به کنترلر مناسب هدایت کنند. اکثر مسیرهای اولیه در لاراول یک شناسه دارایی یکنواخت را به همراه بسته شدن می شناسند و می پذیرند و یک روش ساده و گویا برای مسیریابی ارائه می دهند.

مسیر (مسیر) چیست؟

مسیر راهی برای ایجاد URL درخواست برای برنامه شما است. این URL ها نیازی به مرتبط شدن با فایل های خاصی در یک وب سایت ندارند و برای انسان قابل خواندن و سئو هستند.

در لاراول مسیرهایی در داخل پوشه le ایجاد می شود routes. آنها در فایل ایجاد می شوند web.php برای وب سایت ها و در داخل api.php برای API ها

اینها route به گروه اختصاص داده شده اند middleware شبکه، برجسته کردن وضعیت جلسه و امنیت CSRF. مسیرهای داخل route/api.php آنها بدون تابعیت هستند و به گروه میان افزار API اختصاص داده شده اند.
پیش نصبdefiLaravel nita دارای دو مسیر است، یکی برای وب و دیگری برای API. در اینجا مسیر ورود به وب به شکلی است web.php:

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

مسیر در لاراول چیست؟

تمام مسیرهای لاراول هستند defiدر فایل های مسیر یافت شده در دایرکتوری مشخص شده است routes. برنامه مدیریت مسیر، defiموجود در فایل App\Providers\RouteServiceProvider، از ردیف کردن خودکار این فایل ها مراقبت می کند. پرونده route/web.php defiمسیرهای رابط وب شما را مشخص می کند.

... ممکن defiمسیری را برای این اکشن کنترلر به صورت زیر مشخص کنید:

Route::get(‘user/{id}’, ‘UserController@show’);

Route::resource: روش Route::resource تمام مسیرهای اساسی مورد نیاز برای یک برنامه کاربردی را تولید می کند و از طریق کلاس کنترلر مدیریت می شود.

هنگامی که یک درخواست با URI مسیر مشخص شده مطابقت دارد، متد فراخوانی می شود show defiدر کنترلر مشخص شده است App\Http\ControllersUserController، پاس پارامترهای مسیر به متد.

برای منابع، باید دو کار را روی برنامه انجام دهید فریم ورک Laravel. ابتدا باید یک مسیر منبع ایجاد کنید فریم ورک Laravel که مسیرهای درج، به روز رسانی، مشاهده و حذف را فراهم می کند. دوم، یک کنترل کننده منبع ایجاد کنید که روشی را برای درج، به روز رسانی، مشاهده و حذف ارائه می دهد.

پیش نصبdefiLaravel nita دارای دو مسیر است: یکی برای وب و دیگری برای API. در اینجا مسیر وب در web.php به نظر می رسد:

Route::get(‘/’, function () {

return view(‘welcome’);

});

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

فریم ورک Laravel کار با a middleware که وظیفه تایید تایید یا عدم تایید اپلیکیشن کلاینت را دارد. در صورت تایید مشتری، مسیریابی به صفحه اصلی یا صفحه ورود به سیستم هدایت می شود.

روش ها برای route

کد قبلی defiیک مسیر به صفحه اصلی ظاهر می شود. هر زمان که این مسیر درخواستی دریافت کرد get برای /، را برمی گرداند view welcome

تمام مسیرهای لاراول هستند defiدر فایل های شما مشخص شده است routing، که در داخل دایرکتوری dei قرار دارند routes. در نتیجه، l'AppProvidersRouteServiceProvider برنامه این رکوردها را ردیف می کند. پرونده route/web.php شامل مسیرهایی است که برای رابط وب شما مدیریت می شوند.

ساختار مسیر بسیار ساده است. فایل مناسب (`web.phpo `api.php) و خط کد را با `Route:: `، به دنبال درخواستی که می خواهید به آن مسیر خاص اختصاص دهید و سپس عملکردی را که پس از درخواست انجام می شود را مشخص کنید.

لاراول روش های مسیر زیر را ارائه می دهد:

  • get
  • post
  • put
  • delete
  • patch
  • options

مسیرها هستند defiدر لاراول در کلاس Route با HTTP، مسیری که باید به آن پاسخ داده شود و بسته شدن آن، یا کنترلر است.

نحوه ایجاد مسیر در لاراول

بیایید ببینیم چگونه می توانید مسیرهای خود را در لاراول ایجاد کنید.

یک مسیر اولیه GET

اکنون می خواهم یک مسیر اساسی ایجاد کنم که جدول زمان های 2 را چاپ می کند.

Route::get('/table', function () {
   for($i =1; $i <= 10 ; $i++){
       echo "$i * 2 = ". $i*2 ."<br>";
   }   
});

در کد بالا یک مسیر درخواست GET برای URL ایجاد کردم /table، که جدول زمان های 2 را روی صفحه چاپ می کند.

حالا بیایید همان کد را ببینیم و عددی را که جدول ضرب را برای آن می‌خواهیم پارامتر کنیم:

Route::get('/table/{number}', function ($number) {
   for($i =1; $i <= 10 ; $i++){
       echo "$i * $number = ". $i* $number ."<br>";
   }   
});

در کد 'number' بین پرانتزها نشان دهنده پارامتر است، یعنی عددی که جدول ضرب برای آن محاسبه می شود. هر زمان که یک URL از نوع مشخص شده باشد /table/n، سپس جدول اعداد چاپ می شود n.

همچنین راهی برای ترکیب هر دو ویژگی در یک مسیر وجود دارد. لاراول ویژگی پارامترهای اختیاری را ارائه می دهد که به شما امکان می دهد پارامترهای اختیاری را با استفاده از علامت سوال "?" اضافه کنید. بعد از پارامتر اختیاری و مقدار پیشdefiشب بیایید مثال را ببینیم:

Route::get('/table/{number?}', function ($number = 2) {
   for($i =1; $i <= 10 ; $i++){
       echo "$i * $number = ". $i* $number ."<br>";
   }   
});

در کد بالا، پارامتر مسیر خود را ایجاد کردیم، و شماره را اختیاری می‌کنیم، بنابراین اگر یک کاربر مسیر را نشان دهد/tableسپس جدول 2 را با تنظیم اولیه ایجاد می کندdefinita و اگر کاربر به «/table/{number}سپس جدول اعداد 'number' تولید خواهد شد.

عبارات منظم به عنوان محدودیت برای پارامترهای مسیر

در مثال قبلی ما یک مسیر برای تولید جدول ضرب ایجاد کردیم، اما چگونه می‌توانیم اطمینان حاصل کنیم که پارامتر مسیر در واقع یک عدد است تا هنگام تولید جدول ضرب از خطا جلوگیری کنیم؟

در لاراول، شما می توانید defiبا استفاده از روش ` یک محدودیت در پارامتر مسیر ایجاد کنیدwhereدر نمونه مسیر. «where` نام پارامتر و یک عبارت منظم برای آن پارامتر می گیرد.

خبرنامه نوآوری
مهم ترین اخبار نوآوری را از دست ندهید. برای دریافت آنها از طریق ایمیل ثبت نام کنید.

حالا بیایید نمونه ای از یک محدودیت برای پارامتر ` خود را ببینیم{numero}` برای اطمینان از اینکه فقط یک عدد به تابع ارسال می شود.

Route:: get ( '/table/{numero?}' , funzione ( $numero = 2 ) {    
   for( $i = 1 ; $i < = 10 ; $i + + ) {   
       echo "$i * $numero = " . $i * $numero . "<br>" ; 
   }   
} )->where( 'numero' , '[0-9]+' ) ;

در کد بالا از یک عبارت منظم برای شماره مسیر استفاده کردیم. حال، اگر کاربری سعی کند مسیر را به / جدول / شماره نمایش داده خواهد شد یک استثنا NotFoundHttpException.

مسیریابی لاراول با تابع کنترل

در لاراول، شما می توانید definish یک روش کنترل کننده برای یک مسیر. یک متد کنترلر همه اقدامات را انجام می دهد definite هر بار که کاربر به مسیر دسترسی پیدا می کند.
با کد زیر متد کنترلر را اختصاص می دهیم 'functionname' به یک مسیر:

Route:: get ( '/home' , 'YourController@functionname' ) ;

کد با شروع می شود `Route::` و در نتیجه defiروش درخواست برای مسیر به پایان می رسد. متعاقبا، defiبا اضافه کردن علامت @ قبل از نام متد، مسیر و کنترلر خود را به همراه متد مشخص کنید.

مسیر را یک نام بگذارید

در لاراول، شما می توانید defiبرای مسیر خود یک نام بیاورید این نام اغلب بسیار مفید است. به عنوان مثال، اگر می خواهید یک کاربر را از یک مکان به مکان دیگر هدایت کنید، نیازی به این کار ندارید defiURL تغییر مسیر کامل را تمام کنید. شما به سادگی می توانید نام آن را بدهید. تو می توانی defiنام مسیر را با استفاده از روش «نیت کنیدnameدر مثال مسیر.

Route::get('/table/{number?}', function ($number = 2) {
   for($i =1; $i <= 10 ; $i++){
       echo "$i * $number = ". $i* $number ."<br>";
   }   
})->where('number', '[0-9]+')->name(‘table’);

اکنون می توانم آدرس اینترنتی این مسیر را از طریق کد زیر بازسازی کنم:

$url = route('table');

به طور مشابه، برای تغییر مسیر به این URL، نحو صحیح این خواهد بود:

return redirect()->route('table');

Route Groups

I Route Groups، به معنای واقعی گروه های مسیر، یک ویژگی ضروری در لاراول است که به شما امکان گروه بندی مسیرها را می دهد. گروه های مسیر زمانی مفید هستند که می خواهید ویژگی ها را برای همه مسیرهای گروه بندی شده اعمال کنید. اگر از گروه‌های مسیر استفاده می‌کنید، لازم نیست ویژگی‌ها را به صورت جداگانه برای هر مسیر اعمال کنید. این از تکراری شدن جلوگیری می کند. این به شما اجازه می دهد تا ویژگی هایی مانند middleware o namespaces، سنزا defiاین ویژگی ها را در هر مسیر مشخص کنید. این ویژگی های مشترک را می توان در قالب آرایه به عنوان اولین پارامتر به متد ارسال کرد Route::group.

نحو یک گروه مسیر

Route::group([], callback);  

فاخته []: آرایه ای است که به عنوان پارامتر اول به متد گروه ارسال می شود.

مثال از Route Group به web.php

Route::group([], function()  
{  
   Route::get('/first' , function()  
   {  
      echo "first way route" ;   
   });  
   Route::get('/second' , function()  
   {  
      echo "second way route" ;   
   });  
   Route::get('/third' , function()  
   {  
      echo "third way route" ;   
   });  
});  

در کد، defiبیایید روش را شروع کنیم گروه()، که شامل دو پارامتر، i.e array e closure. درون closure، ما میتوانیم defiبدونید چند تا route ما میخواهیم. در کد بالا داریم defiسه به پایان رسید route.

اگر از طریق مرورگر به URL دسترسی پیدا کنیم localhost/myproject/first سپس نفر اول دخالت می کند route تایپ کردن در مرورگر first way route.

با URL localhost/myproject/second سپس دومی می آید route تایپ کردن در مرورگر second way route.

در حالی که با URL localhost/myproject/third سپس سومی می آید route تایپ کردن در مرورگر third way route.

پیشوندهای Route Groups

پیشوندهای route آنها زمانی استفاده می شوند که بخواهیم یک ساختار URL مشترک برای چندگانه ارائه کنیم route.

ما می توانیم برای همه مسیرها پیشوند را مشخص کنیم defiدرون گروه با استفاده از گزینه آرایه پیشوندی در Route Groups.

مثال از web.php

Route::group(['prefix' => 'movie'], function()  
{  
   Route::get('/godfather',function()  
   {  
     echo "Godfather casting";  
   });  
   Route::get('/pulpfiction',function()  
   {  
     echo "Pulp Fiction casting";  
   });  
   Route::get('/forrestgump',function()  
   {  
     echo "Forrest Gump casting";  
   });  
});  

کد شامل سه مسیر است که از آدرس های زیر قابل دسترسی است:

/movie/godfather  --->   Godfather casting

/movie/pulpfiction  --->   Pulp Fiction casting

/movie/forrestgump  --->   Forrest Gump casting

میان افزار

همچنین می‌توانیم میان‌افزار را به تمام مسیرهای درون یک گروه اختصاص دهیم. میان افزار باید باشد defiقبل از ایجاد گروه تمام شد. برای دیدن نحوه انجام این کار، مقاله ما را بخوانید میان افزار لاراول چگونه کار می کند.

Esempio:

Route::middleware(['age'])->group( function()  
{  
  
   Route::get('/godfather',function()  
   {  
     echo "Godfather casting";  
   });  
   Route::get('/pulpfiction',function()  
   {  
     echo "Pulp Fiction casting";  
   });  
   Route::get('/forrestgump',function()  
   {  
     echo "Forrest Gump casting";  
   });  
  
});  

پیشوندهای نام مسیر

روش name برای پیشوند هر نام استفاده می شود route با یک رشته مشخص در روش name، باید رشته را با یک کاراکتر انتهایی در پیشوند مشخص کنیم.

مثال web.php

Route::name('movie.')->group(function()  
{  
   Route::get('users', function()  
   {  
      return "movie.films";  
   })->name('films');  
});  

Ercole Palmeri

خبرنامه نوآوری
مهم ترین اخبار نوآوری را از دست ندهید. برای دریافت آنها از طریق ایمیل ثبت نام کنید.

مقالات اخیر

مداخله نوآورانه در واقعیت افزوده، با یک بیننده اپل در پلی کلینیک کاتانیا

یک عمل جراحی چشم با استفاده از نمایشگر تجاری Apple Vision Pro در پلی کلینیک کاتانیا انجام شد…

3 می 2024

مزایای رنگ آمیزی صفحات برای کودکان - دنیایی از جادو برای همه سنین

توسعه مهارت های حرکتی ظریف از طریق رنگ آمیزی، کودکان را برای مهارت های پیچیده تری مانند نوشتن آماده می کند. رنگ کردن…

2 می 2024

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

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

1 می 2024

ناشران و OpenAI توافق نامه هایی را برای تنظیم جریان اطلاعات پردازش شده توسط هوش مصنوعی امضا می کنند.

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

آوریل 30 2024

نوآوری را به زبان خود بخوانید

خبرنامه نوآوری
مهم ترین اخبار نوآوری را از دست ندهید. برای دریافت آنها از طریق ایمیل ثبت نام کنید.

ما را دنبال کنید