مبانی لاراول 7 - Routing

فهرست مطالب

  • Basic Routing
    • Redirect Routes
    • View Routes
  • Route Parameters
    • Required Parameters
    • Optional Parameters
    • Regular Expression Constraints
  • Named Routes
  • Route Groups
    • Middleware
    • Namespaces
    • Subdomain Routing
    • Route Prefixes
    • Route Name Prefixes
  • Route Model Binding
    • Implicit Binding
    • Explicit Binding
  • Fallback Routes
  • Rate Limiting
  • Form Method Spoofing
  • Accessing The Current Route
  • Cross-Origin Resource Sharing (CORS)

 مبانی Routing

ابتدایی ترین Laravel route ها  یک URI و یک Closure را می پذیرند و روشی بسیار ساده و پرمعنی برای تعریف routes ارائه می دهند:

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

فایل های پیش فرض Route

کلیه  route های لاراول در فایل های route شما تعریف شده است که در دایرکتوری routes قرار دارند. این فایل ها به طور خودکار توسط framework لود می شوند. فایل routes/web.php روتی را برای web interface شما تعریف می کند. این روت ها به گروه web middleware اختصاص داده شده است ، که امکاناتی مانند session state و CSRF protection را در اختیار شما قرار می دهد. روت های موجود درroutes/api.php به صورت sateless بوده و به گروه api middlewareاختصاص داده شده است.

در بیشتر برنامه ها ، با تعیین روت ها در فایل routes/web.php شروع خواهید کرد. ممکن است با وارد کردن آدرس اینترنتی مسیر تعریف شده در مرورگر خود ، به روت های تعریف شده در routes/web.php  دسترسی پیدا کنید.

Route::get('/user', '[email protected]');

روت های تعریف شده در فایل routes/api.php توسط RouteServiceProvider در یک route group  قرار دارند. در این group ، پیشوند/api URI بصورت خودکار اعمال می شود ، بنابراین نیازی به اعمال دستی آن برای هر روت موجود در فایل نیست. می توانید prefix و دیگر گزینه های route group را با تغییر در کلاس RouteServiceProvider تغییر دهید.

متد های موجود در Router

روتر به شما امکان می دهد روتی را که به هر 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 انجام دهید. یا حتی ممکن است route یی را رجیسترکنید که به تمام HTTP verb ها با استفاده ازany  متد پاسخ دهد:

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

Route::any('/', function () {
    //
});

CSRF Protection

هر فرم HTML که به روت های POST، PUT، PATCH یا DELETE اشاره دارد و در فایل روت های web تعریف شده است باید یک فیلد  CSRF token  داشته باشد. در غیر این صورت ، درخواست ریجکت خواهد شد.

‌<‌form method="POST" action="/profile"‌>‌
    @csrf
    ...
‌<‌/form‌>‌

Redirect Routes

اگر روتی را تعریف می کنید که به URI دیگری ری دایرکت می شود ، می توانید از متد  Route::redirect استفاده کنید. این روش یک shortcut مناسب را فراهم می کند به طوری که شما مجبور نیستید یک route کامل یا controller را برای انجام یک تغییر route ساده تعریف کنید:

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

به طور پیش فرض ، Route::redirectکد  وضعیت 302 را برمی گرداند. شما می توانید status code را با استفاده از پارامتر سوم اختیاری تنظیم کنید:

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

برای بازگرداندن کد وضعیت 301 می توانید از متد Route::permanentRedirect استفاده کنید:

Route::permanentRedirect('/here', '/there');

View Routes

اگر route شما فقط به بازگرداندن یک view نیاز دارد ، می توانید از متد Route::view استفاده کنید. مانند متد redirect ، این روش یک میانبر ساده را فراهم می کند تا نیازی به تعیین روت کامل یا کنترلر نباشد. متد view ، یک URI را به عنوان اولین آرگومان خود و نام آن  به عنوان دومین آرگومان می پذیرد. علاوه بر این ، شما می توانید مجموعه ای از داده ها را برای view به عنوان یک آرگومان سوم اختیاری ارائه دهید:

Route::view('/welcome', 'welcome');

Route::view('/welcome', 'welcome', ['name' =‌>‌ 'Taylor']);

ادامه دارد...

سعید نصیری
سعید نصیری

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