สอน 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