ตอนที่2: ลองเล่น Routing

Basic Routing หรือ เส้นทาง อย่างเช่น

http://domain.com/my/page

ก็จะแปลได้ประมาณว่า ไปที่หน้า my/page ของเว็บไซต์ที่ชื่อว่า domain.com ผ่านโปรโตคอลที่ชื่อว่า http อะไรแบบนี้เป็นต้น

ก่อนอื่นใด เริ่มแรกเลย ไปที่ app/routes.php เราจะเจอกับ
Route::get('/', function()
{

// Call app/views/hello.php
return View::make('hello');
});


ถ้าเราลองเปลี่ยนจาก return View::make('hello'); มาเป็น return "Hello Laravel!"; เราก็จะได้หน้าตาออกมาประมาณนี้

เห็นมั้ยว่ามันไม่ยากอะไรเลย ;) ถ้าลองสังเกตุวิธีการเขียน Routing มันจะคล้ายๆ กับ jQuery เลยนะ เขียนสนุกขึ้นเยอะเลย ^_^
* subdomain ตามรูปมาจากตอนที่แล้วนะจ๊ะ

จาก Routing ที่เป็นตัวอย่างด้านบน เราสามารถเขียนแบบนี้ก็ได้
$hello = function(){
    return View::make('hello');
}

Route::get('/', $hello);


เหมือนเขียน javascript เลยอ่ะ เหยดดดดเข้! ยัง! ยังไม่พอ เล่นต่ออีก เราจะมาเล่นกับ Route::get กันให้หนำใจกันซะก่อน ฮ่าๆ ๆ ๆ

Route::get('/first/page', function() {
return 'First!';
});

Route::get('/second/page', function() {
return 'Second!';
});

Route::get('/third/page', function() {
return 'Potato!';
});


แล้วทีนี้เราก็จะลองเข้าผ่าน
http://laravel.localhost.com/first/page
http://laravel.localhost.com/second/page
http://laravel.localhost.com/third/page


ก็จะได้ผลลัพธ์ออกมาเป็นแบบนี้
Route Parameters - การใช้ตัวแปรใน Route พอเราเริ่มที่จะมี Route เยอะขึ้น มันก็จะเป็นแบบนี้ -___-"

Route::get('/books', function() {
return "Books in the default category.";
});

Route::get('/books/fiction', function() {
return "Books in the fiction category.";
});

Route::get('/books/science', function() {
return "Books in the science category.";
});

Route::get('/books/romance', function() {
return "Books in the romance category.";
});


แต่ถ้าเราใช้ parameters เข้ามาช่วยนะซาร่าห์มันจะสะดวกขึ้นเยอะเลย

Route::get('/books/{page?}', function($page="default") {
return "Books in the {$page} category.";
});


จากโค้ดด้านบนวิธีใช้ก็ง่ายมากเลยนะ
Route::get('/books/{page?}', function($page="default") {});
แค่ใช้ ปีกกา {} หลังค่าที่เราต้องการใช้งาน จากนั้นก็มาเพิ่มตัวแปรตรง function เพื่อรับค่าที่ส่งมาจาก GET ส่วนเครื่องหมาย ? ที่อยู่ใน {} ใส่เพื่อบอกว่าตัวแปรตัวนี้จะมีก็ได้ไม่มีก็ได้(Optional)

ใช้หลายๆ ตัวก็ได้ อย่างเช่น
Route::get('/books/{page?}/{value?}', function($page="my page", $value="default value") {
return "Books in the {$page} category with {$value}.";
});


เป็นต้น

จุดหนึ่งที่รู้สึกว่ามันเออเจ๋งว่ะก็คือ มันทำ Regular Expression ได้ด้วยล่ะเออ เช่น
Route::get('/books/{page?}/{value?}', function($page=null, $value=null) {
//
})->where('page'=>'[a-ZA-Z]+', 'value'=>'[0-9]+');


View Data - แสดงผลหน้า view กันเถอะ
# app/route.php (มักง่ายใช้โค้ดเก่าต่อเลยละกัน)

Route::get('/books/{page?}/{value?}', function($page="my page", $value="default value") {
// จับตัวแปรมาอยู่ใน Array
$data = array('page'=>$page, 'value'=>$value);

// แล้วส่งค่าไปยัง views/hello.php
return View::make('hello', $data);
});


# app/view/hello.php ใช้ view ที่ติดมาตั้งแต่แรกนั่นล่ะ
<h1>This is view page</h1>
Books in the <?=$page?> category with <?=$value?>.


หน้าเบราเซอร์

ขออนุญาตตัดจบแค่นี้ก่อนนะครับ งานงอกฮะ
เดี๋ยวคราวหน้าเราจะมาลองเล่น Filter กันต่อ ส่วนรายละเอียดอื่นๆ ของ Route สามารถเข้าไปอ่านต่อจากใน Document นี้ได้เลยจ้า มีให้เล่นกันเยอะมว๊าาาาก <3

Comments