Route ใน Codeigniter Framework ( รวมถึงเฟรมเวิร์คอื่น ๆ ด้วย ) คือ ตัวช่วยในการปรับแต่ง URL หรือ กำหนดเส้นทางการเข้าชมหน้าเว็บไซต์ เพื่อประโยชน์ช่วยทำให้ URL สั้นลง ปรับแต่ง URL ให้สวยงามเข้าใจได้ง่าย ปรับแต่ง URL ให้มีผลทาง SEO เป็นต้น
ตัวอย่างเช่น URL ที่มีการผ่านค่าตัวแปร Query String หรือ Parameter หลายตัวแปร
localhost:8080/member/profile/abcd
จาก URL ตัวอย่างด้านบน เราสามารถใช้ความสามารถของ Route ปรับ URL ให้สั้นลงและสวยงามได้แบบตัวอย่างด้านล่าง
localhost:8080/abcd
วิธีใช้ Route ทำ URL ให้สวยงาม
ในการกำหนด Route นั้น เราสามารถเขียนคำสั่งได้ที่ไฟล์ application/config/routes.php
โดยค่าเริ่มต้นในไฟล์ routes.php จะมีคำสั่งเริ่มต้นดังนี้ครับ
$route['default_controller'] = ''; // กำหนด Controller เริ่มต้น แทน index.php $route['404_override'] = ''; // กำหนด Controller สำหรับหน้า 404 Error $route['translate_uri_dashes'] = FALSE; // เปิดการใช้ - ขีดกลางสำหรับ Controller
เมื่อเราสร้าง Controller และมี Method ต่าง ๆ ใน Controller นั้น เราสามารถเปลี่ยนเส้นทางการเรียกใช้งานผ่าน URL ได้ โดยการเขียนคำสั่งใน routes.php ยกตัวอย่าง Controller Member ตามด้านล่าง
class Member extends MX_Controller {
public function profile($member_name)
{
echo $member_name;
}
}
เราจะสามารถเข้าถึงเมธอด Profile ได้ด้วย URL
localhost/member/profile/messi
ถ้าเราต้องการให้เข้าถึงหน้านี้โดยการให้มีเพียงชื่อโดเมน และตามด้วยชื่อผู้ใช้งานเลย เราสามารถเขียนคำสั่งใน routes.php ได้ดังนี้
$route['(:any)'] = 'member/profile/$1';
อธิบายโค๊ดด้านบนนะครับ ฝั่งขวา คือ ชื่อ controller, method และ parameter ต้นแบบของเรา ส่วนฝั่งซ้าย คือ เส้นทางใหม่ที่เราต้องการให้ทำงานเหมือนกัน
(:any) หมายถึง พารามิเตอร์ ที่จะเป็นตัวเลขหรือตัวอักษรก็ได้ โดยแทนฝั่งขวาด้วย $1 และถ้ามีพารามิเตอร์หลายตัวก็จะแทนด้วย $2 $3 … ไปเรื่อย ๆ
(:num) หมายถึง รับพารามิเตอร์ที่เป็นตัวเลขเท่านั้น เช่น
localhost/member/profile/100
ตัวเลข 100 คือ member id ของผู้ใช้งาน ซึ่งจำเป็นต้องเป็นตัวเลขเท่านั้น เราจะสามารถเขียน route ได้ ดังนี้
$route['(:num)'] = 'member/profile/$1';
และเมื่อเรียก url ที่เราได้กำหนด route ไว้เรียบร้อยแล้ว เราจะสามารถเรียกใช้งานได้ดังนี้ครับ
ตัวอย่างเมื่อเขียนใน html code
View Profile
จะสังเกตุว่า เราไม่จำเป็นต้องระบุชื่อ Controller หรือ Method ใด ๆ เลย เพราะเราได้กำหนดเส้นทางใหม่ ไว้แล้วใน Route นั่นเอง