Codeigniter วิธีใช้ Route กำหนดเส้นทาง และทำ URL ให้สวยงาม

Codeigniter-วิธีใช้-Route-กำหนดเส้นทาง-และทำ-URL-ให้สวยงาม
Codeigniter-วิธีใช้-Route-กำหนดเส้นทาง-และทำ-URL-ให้สวยงาม

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 นั่นเอง

Leave a Reply