สอน Laravel 5 : กำหนดเส้นทางเว็บไซต์ด้วย Router

สอน-laravel-framework
สอน-laravel-framework

สอน Laravel 5 ตอน : กำหนดเส้นทางเว็บไซต์ด้วย Router



Router เป็นส่วนที่มีไว้เพื่อกำหนดเส้นทางการทำงานของเว็บไซต์ ตัวอย่างเช่นเมื่อมีคนเข้าชมเว็บไซต์ หน้าแรกที่เรา
ต้องการให้แสดงต่อผู้ใช้ผ่านเบราว์เซอร์คือหน้าไหน และเมื่อเกิดเหตุการณ์ต่าง ๆ ในหน้าเว็บไซต์เช่นการคลิ๊กปุ่มสั่งซื้อ

เส้นทางต่อไปจะให้โหลดหน้าไหนมาแสดง เราสามารถรับคำสั่งจากผู้ใช้งานเว็บไซต์และกำหนดเส้นทางเมื่อเกิดการ
ปฏิสัมพันธ์ภายในเว็บได้ผ่านสิ่งที่เรียกว่า Router ใน Laravel Framework อันที่จริง PHP Framework ส่วนมาก
มักจะมีส่วน Router เป็นคุณสมบัติหลัก ๆ ติดตัวมาด้วยอยู่แล้ว และมีหลักการในการทำงานคล้าย ๆ กันคือมีหน้าที่หลัก
ในการรับค่าข้อมูล กำหนดเส้นทาง และส่งต่อข้อมูลนั้นไปให้ส่วนอื่นทำงานในขั้นตอนต่อไป


Router Method ที่เราใช้งานได้

ด้านล่างคือ Method ทั้งหมดใน Laravel Framework แต่หลัก ๆ ที่เราจะใช้ทดสอบในบทความนี้ก็จะมีแค่ 3 Method
คือ Route::get() สำหรับรับค่าตัวแปรที่ส่งมาแบบ GET และ Route::post() รับค่าตัวแปรแบบ POST ส่วน any
ความหมายก็คือเส้นทางหรือ url และตัวแปรที่ส่งมาจะใช้งานได้ทั้งแบบ GET และ POST

Route::get();
Route::post();
Route::put();
Route::patch();
Route::delete();
Route::options();
Route::any();
Route::match();


รูปแบบการใช้งาน Router

รูปแบบการใช้งาน Router ใน Laravel Framework คือ พารามิเตอร์ตัวแรกจะเป็นชื่อ Method หรือ uri ที่จะ
แสดงบน address bar ของเบราว์เซอร์และตามด้วยตัวแปรที่ส่งมาแบบ GET พารามิเตอร์ตัวที่สองคือ callback
ฟังก์ชั่น คือฟังก์ชั่นที่จะทำงานหลังจากเรียกใช้ Method นี้ ตัวอย่างเช่น สมมุติว่าโฟลเด้อโปรเจคคือ

http://localhost/site/public

เมื่อเราสร้าง Router Method ชื่อว่า hello

Route::get('hello',function () {
    return "Hi, I Am Beginner In Laravel";
});

และทดสอบการทำงานผ่าน url แบบนี้

http://localhost/site/public/hello

ผลลัพธ์ที่ได้คือข้อความแสดงบนเบราว์เซอร์

Hi, I Am Beginner In Laravel


Router เพิ่มเส้นทางและส่ง Parameter แบบ GET

1. ไฟล์หลักที่เราต้องใช้ในการกำหนดเส้นทางจะอยู่ที่ app/Http/routes.php
2. ให้ลองเปิดไฟล์ routes.php และเพิ่ม Method ชื่อว่า hello และทดสอบรันผ่าน url

Route::get('hello',function () {
    return "Hi, I Am Beginner In Laravel";
});

3. จากนั้นให้ทดลองเพิ่มพารามิเตอร์เข้าไปที่ Method hello ดังนี้

Route::get('hello/{value}',function ($value) {
    return "Hi, I Am Beginner In Laravel ".$value;
});

ผลลัพธ์ที่ได้เมื่อเราเรียกใช้งานผ่านเบราว์เซอร์

http://localhost/site/public/hello/นาจาา
Hi, I Am Beginner In Laravel นาจาา

{value} คือตัวแปรที่จะถูกส่งเข้ามาผ่าน url เป็นตัวแปรแบบ GET และจะถูกรับค่าเข้ามาทำงานใน callback ฟังก์ชั่น
ผ่านตัวแปร $value พอจะเข้าใจหลักการการทำงานแล้วไช่ไหมครับ เมื่อเราได้ค่าตัวแปรนั้น ๆ มาแล้วในขั้นตอนต่อ ๆ ไป
อาจจะส่งตัวแปร $value ไปประมวลผลกับ controller ก่อนที่จะส่งไปพร้อมกับ view ใด ๆ แต่ในตัวอย่างจะเป็นการ
return ค่าเปล่า ๆ ออกไปแสดงผลเท่านั้น



ตัวอย่างด้านบนเป็นการเพิ่ม Router Method แบบ GET ทำให้สามารถทดสอบการส่งตัวแปรผ่าน url ได้เลย
สำหรับการส่งข้อมูลแบบ POST เราจำเป็นจะต้องสร้าง html form ขึ้นมาก่อน ซึ่งจะรวมไปถึงการทำงานในส่วน
ของ view ด้วย ในกระทู้ต่อไปจะเพิ่มการสร้าง view และการส่งข้อมูลแบบ post ร่วมกับ Router Post Method