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

ساختار Laravel
ساختاری که توضیح داده میشود، مربوط به Laravel 4 است، که ممکن است در آینده تغییر داشته باشد. پوشه public محل قرار دادن فایل های استاتیک و همچنین استایل ها و فایل های جاوا اسکریپت است. پوشه views که در داخل پوشه app قرار دارد، محل قرار دادن فایل های صفحات داینامیک است.

همچنین کدهای مربوط به Routing در فایل routes.php در پوشه app قرار دارد.

کار با routes
اولین کاری که باید انجام دهیم، تغییر صفحه اصلی می باشد. برای اینکار ابتدا یک فایل به نام home.blade.php در پوشه views می سازیم. Laravel از موتور تپلمیت Blade استفاده میکند. که در قسمت بعدی نحوه کار با آن را شرح میدهیم.

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

<!DOCTYPE html>
<html>
<head>
  <title>My site</title>
  <meta charset="utf8">
  <link rel="stylesheet" type="text/css" href="style/main.css">
</head>
<body>
  <h1>سایت من</h1>
  <a href="/register">ثبت نام</a>-
</body>
</html>

همانطور که میبیند ما یک فایل استایل را هم به آن اضافه کردیم، که در پوشه style قرار دارد. اما یادتان باشد که مسیر پوشه style در  واقع در پوشه public است.

حالا میخواهیم زمانی که کاربر صفحه index را باز کرد، فایل بالا رندر و نمایش داده شود. فایل routes.php از پوشه app را باز میکنیم. زمانی که این فایل را باز میکنید، کدهای زیر درون آن قرار دارد.

Route::get('/', function() {
  return View::make('hello');
});

کد بالا در  واقع میگوید هر زمانی که کاربر صفحه index (/) را باز کرد، فایل hello نمایش داده شود. شما میتوانید فایل hello را در پوشه views مشاهده کنید. تنها کاری که ما باید انجام دهیم، این است که hello را به home تغییر دهیم.

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

اگر به دقت کدهای فایل home.blade.php را که در بالا نوشتیم مشاهده کنید، ما یک لینک ثبت نام هم قرار داده ایم، که با کلیک کردن کاربر روی آن، به مسیر register/ منتقل میشود. ابتدا یک فایل به نام register.blade.php در پوشه views میسازیم و کدهای زیر را درون آن قرار میدهیم.

<!DOCTYPE html>
<html>
<head>
  <title>Register</title>
  <meta charset="utf8">
  <link rel="stylesheet" type="text/css" href="../style/main.css">
</head>
  <h1>ثبت نام کاربران</h1>
</html>

حالا باید در فایل routes.php کدی قرار دهیم که زمانی که کاربر آدرس register/ را باز کرد، صفحه register.blade.php نمایش داده شود. برای اینکار کد زیر را درون فایل routes.php قرار میدهیم.

Route::get('/register', function() {
  return View::make('register');
});

حالا به صفحه اصلی می رویم و روی لینک کلیک میکنیم. بسته به نوع سرور شما ممکن است، وارد صفحه register شده باشید و یا با صفحه 404 روبرو شوید. اگر صفحه register برای شما باز شده باشد که همه چیز درست است. اما اگر باز نشده است، باید کدهای درون فایل htaccess. را چک کنید.

در  واقع آدرس اصلی صفحه register آدرس [url]http://example.com/index.php/register[/url] میباشد، ولی ما باید با استفاده از کدهای htaccess آدرس آن را به [url]http://example.com/register[/url] تغییر دهیم.

این روش برای استفاده در VPS یا localhost است. ابتدا کدهای داخل فایل htaccess. را که درون پوشه public است، مشاهده کنید. مشابه کدهای زیر است.

<IfModule mod_rewrite.c>
    RewriteEngine on
 
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
 
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

میبینید که در کد بالا از ماژول rewrite استفاده کردیم. برای استفاده از این روش باید ماژول rewrite فعال باشد. برای فعال کردن این ماژول در سیستم عامل های بر پایه Debian و احتمالاً OS X از کد زیر استفاده کنید.

در سیستم عامل ویندوز باید در تنظیمات سرویس دهنده apache خود، این ماژول را فعال کنید.

اما اگر به هر دلیلی از این روش نتوانستید استفاده کنید و یا هاست شما این ویژگی را غیرفعال کرده بود، کدهای زیر را جایگزین کدهای قبلی کنید. کدهای زیر در localhost ممکن است جواب ندهند. برای localhost باید از روش بالا استفاده کنید.

Options +FollowSymLinks
RewriteEngine On
 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

خب حالا به صفحه اصلی می رویم و روی لینک ثبت نام کلیک میکنیم، مشاهده میکنیم که وارد صفحه ثبت نام شده ایم.

ما تا این مطلب مشغول آماده سازی Laravel بودیم. کارهایی از قبیل حذف آدرس public، درست کردن permissionها و حذف index.php از آدرس سایت بودیم، ولی در این مطلب با مسیریابی هم آشنا شدیم.

منبع آموزش: Laravel: مسیریابی یا Routing | آپارنت