php-codeigniter-framework

สอน codeigniter ทำ url ให้สั้นและสวยด้วย _remap

สอน codeigniter ทำ url ให้สั้นและสวยด้วย _remap



สอน codeigniter ทำ url ให้สั้นและสวยด้วย _remap
จุดประสงค์หลักของการทำ Remapping Method Calls หรือการเรียกใช้งานฟังก์ชั่น _remap ใน codeigniter framework ก็เพื่อการนำเอา uri segment ตัวที่ 2 ที่ต่อจากชื่อของ controller นั้น ๆ ไปเปรียบเทียบกับ

รายชื่อเมธอดทั้งหมดใน controller นั้น ๆ ว่ามีอยู่จริงไหม ถ้ามีและตรงกันก็สามารถเรียกใช้งานได้เลย แต่ถ้าไม่มีก็ให้เข้าสู่การทำงานของ default method คือ index นั่นเอง นั่นหมายความว่า การทำ _remap จะทำให้เราสามารถแทรกคำสั่งใด ๆ ก็ได้ ก่อนที่ index ฟังก์ชั่นจะทำงาน


ประโยชน์อีกอย่างหนึ่งของการทำ _remap ใน codeigniter คือเอาไว้จัดการกับ controller ที่ทำงานเกี่ยวกับหมวดหมู่ ยกตัวอย่างเช่น หากเรามี Controller ที่ชื่อว่า Category และมีเมธอดหรือหมวดหมู่ย่อยอยู่ใน Category controller อีกหลายหมวดหมู่ย่อย ลักษณะ url ของเราจะออกมาได้ในลักษณะนี้ คือ

จาก url ข้างบนเราจะรู้สึกว่ามันยาวเกินไป อยากได้สั้นกว่านี้ เหตุผลก็เพราะว่าเราไม่สามารถส่ง parameter เข้าไปใน default method คือ index ของ codeiginter ได้ เลยจำเป็นต้องสร้างเมธอดขึ้นมเพื่อรับค่าพารามิเตอร์อีกทีหนึ่ง แต่ปัญหานี้จะหมดไปถ้าเราใช้งาน Remapping Method Calls เราจะสามารถใช้งาน url สวย ๆ แบบนี้ได้ทันที


วิธีใช้งาน _remap ใน codeigniter

เริ่มต้นง่าย ๆ เลยครับ สร้าง public ฟังก์ชั่นขึ้นมาต่อจาก __construct และอยู่เหนือ index ( จะอยู่ล่างก็ได้ แต่เรียงไว้เพื่อสื่อถึงลำดับการทำงานของฟังก์ชั่น )


วิธีรับ parameter ร่วมกับ _remap

ในฟังก์ชั่น _remap เราสามารถพิมพ์ชื่อ method และค่าพารามิเตอร์ ส่งและรับค่าเข้ามาได้ในลักษณะดังนี้

ผลลัพธ์เมื่อเราเข้าเว็บไซต์ผ่าน url : http://localhost/welcome/news/11/22/33


วิธีเปรียบเทียบกับเมธอดใน Controller ผ่าน _remap ฟังก์ชั่น

ในกรณีที่ Controller ของเรามีฟังก์ชั่นหรือเมธอดที่ตรงกับตัวแปร $method ที่ถูกส่สงเข้ามาในฟังก์ชั่น _remap เราสามารถเรียกใช้งานฟังก์ชั่นนั้น ๆ ได้ ผ่านคำสั่ง call_user_func_array โดยสามารถเขียนคำสั่งได้ดังนี้

จากตัวอย่างโค๊ดด้านบน ถ้าเราเข้าเว็บไซต์ผ่าน url : http://localhost/welcome/news/11/22/33 ระบบจะเข้าไปทำงานในฟังก์ชั่น news ทันทีเพราะ $method ที่ส่งเข้ามาใน _remap มีชื่อตรงกัน ในกรณีที่ไม่ตรงก็จะไปทำงานในฟังก์ชั่น index แทน

วิธีประยุกต์ใช้ _remap

ในกรณีที่เราไม่ต้องการสร้าง controller เยอะ และใน controller นั้นก็ไม่อยากให้มีเมธอดเยอะเช่นกัน อยากให้เว็บไซต์มี controller เดียว แต่ไฟล์ html หรือ view เยอะมาก เราสามารถประยุกต์ใช้ _remap ในลักษณะนี้ได้ครับ


กระทู้ใกล้เคียง

PHP Codeigniter เน้นใช้งาน : ตอน 1 ดาวน์โหลดและติด... PHP Codeigniter : ตอน 1 ดาวน์โหลดและติดตั้ง codeinginter PHP Codeigniter เป็น MVC framework ที่ได้รับความนิยมและใช้ในงานพัฒนาเว็บไซต์กันอย่างแพร่หล...
ทำเว็บไซต์ด้วย codeigniter การใช้งาน autoload... ทำเว็บไซต์ด้วย codeigniter การใช้งาน autoload ทำเว็บไซต์ด้วย codeigniter การใช้งาน autoload การทำ autoload ใน codeigniter นั้น หมายถึงการเปิดใช้...
ทำเว็บไซต์ให้ปลอดภัย Codeigniter Security... ทำเว็บไซต์ให้ปลอดภัย Codeigniter Security อย่าลืมที่จะเพิ่มความปลอดภัยให้เว็บไซต์ ด้วยคุณสมบัติด้านความปลอดภัยที่ codeigniter มีให้อยู่แล้ว Fram...
วิธีใช้งาน core เพิ่มคุณสมบัติให้ codeigniter... วิธีใช้งาน core ใน codeigniter เพิ่มคุณสมบัติระบบหลัก สำหรับการพัฒนาเว็บไซต์ด้วย framework ไม่ว่าจะใช้เฟรมเวิร์คอะไรบนโลกนี้ โดยพื้นฐานแล้วก็เพื่อก...