การใช้งาน Route ใน Laravel

ใน Laravel นั้นจะเก็บ routes ไว้ที่ไฟล์ app/routes.php เริ่มต้นครั้งแรกจะมีแค่ route ไปยังหน้าแรก ( / ) route ที่ง่ายที่สุดใน Laravel จะมีแค่การระบุ URL และ Closure callback เท่านั้น


การ routing แบบ GET

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

การ routing แบบ POST

Route::post('foo/bar', function()
{
    return 'Hello World';
});

การ routing ที่รองรับทุก HTTP request

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

ถ้าต้องการบังคับให้เข้าใช้งาน URL ผ่าน HTTPs เท่านั้น ก็สามารถทำได้ง่ายๆ แค่เปลี่ยน parameter ตัวที่สองเป็น array เข้าไป

Route::get('foo', array('https', function()
{
    return 'Must be over HTTPS';
}));

Laravel มีคลาส URL ที่มีฟังก์ชัน to() เพื่อใช้สร้างลิงค์สำหรับ route ที่เราประกาศไว้ เช่น ถ้าต้องการสร้างลิงค์ไปที่ Route::get(‘foo’) ก็เรียกใช้ URL::to() ได้เลย

$url = Route::to('foo');

เราสามารถรับค่าจาก url ที่มีการ route ไว้และส่งต่อเป็น parameters  ไปยัง callback  ได้เลย เช่น รับไอดีของผู้ใช้ เพื่อนำไปดึงข้อมูลมาแสดง

Route::get('user/{id}', function($id)
{
    return 'User '.$id;
});

เราสามารถสร้างข้อบังคับ (constraint) สำหรับ parameter ที่รับผ่าน route ให้รับเฉพาะตัวเลขหรือตัวหนังสือก็ได้

Route::get('user/{name}', function($name)
{
    //
})
->where('name', '[A-Za-z]+');

Route::get('user/{id}', function($id)
{
    //
})
->where('id', '[0-9]+');

หรือจะรับ parameter พร้อมๆ กันเลย ก็ทำได้นะครับ ส่วน constraint ก็ส่งเป็น array แทน

Route::get('user/{id}/{name}', function($id, $name)
{
    //
})
->where(array('id' => '[0-9]+', 'name' => '[a-z]+'));