Site icon บริษัท โค๊ดบี จำกัด

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

php-codeigniter-framework

php-codeigniter-framework

<h3>สอน codeigniter ทำ url ให้สั้นและสวยด้วย &lowbar;remap<&sol;h3>&NewLine;<p><&sol;br><br &sol;>&NewLine;<strong>สอน codeigniter ทำ url ให้สั้นและสวยด้วย &lowbar;remap<&sol;strong><br &sol;>&NewLine;จุดประสงค์หลักของการทำ <strong>Remapping Method Calls<&sol;strong> หรือการเรียกใช้งานฟังก์ชั่น &lowbar;remap ใน codeigniter framework ก็เพื่อการนำเอา uri segment ตัวที่ 2 ที่ต่อจากชื่อของ controller นั้น ๆ ไปเปรียบเทียบกับ<&excl;--more--><&sol;p>&NewLine;<p>รายชื่อเมธอดทั้งหมดใน controller นั้น ๆ ว่ามีอยู่จริงไหม ถ้ามีและตรงกันก็สามารถเรียกใช้งานได้เลย แต่ถ้าไม่มีก็ให้เข้าสู่การทำงานของ default method คือ index นั่นเอง นั่นหมายความว่า การทำ &lowbar;remap จะทำให้เราสามารถแทรกคำสั่งใด ๆ ก็ได้ ก่อนที่ index ฟังก์ชั่นจะทำงาน<br &sol;>&NewLine;<&sol;br><br &sol;>&NewLine;ประโยชน์อีกอย่างหนึ่งของการทำ &lowbar;remap ใน codeigniter คือเอาไว้จัดการกับ controller ที่ทำงานเกี่ยวกับหมวดหมู่ ยกตัวอย่างเช่น หากเรามี Controller ที่ชื่อว่า Category และมีเมธอดหรือหมวดหมู่ย่อยอยู่ใน Category controller อีกหลายหมวดหมู่ย่อย ลักษณะ url ของเราจะออกมาได้ในลักษณะนี้ คือ<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >http&colon;&sol;&sol;localhost&sol;ชื่อคอนโทรลเลอร์&sol;ชื่อเมธอดหลัก&sol;ชื่อหมวดหมู่ย่อยที่เป็นพารามิเตอร์<&sol;pre>&NewLine;<p>จาก url ข้างบนเราจะรู้สึกว่ามันยาวเกินไป อยากได้สั้นกว่านี้ เหตุผลก็เพราะว่าเราไม่สามารถส่ง parameter เข้าไปใน default method คือ index ของ codeiginter ได้ เลยจำเป็นต้องสร้างเมธอดขึ้นมเพื่อรับค่าพารามิเตอร์อีกทีหนึ่ง แต่ปัญหานี้จะหมดไปถ้าเราใช้งาน Remapping Method Calls เราจะสามารถใช้งาน url สวย ๆ แบบนี้ได้ทันที<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >http&colon;&sol;&sol;localhost&sol;category&sol;sport &NewLine;http&colon;&sol;&sol;localhost&sol;category&sol;business &NewLine;http&colon;&sol;&sol;localhost&sol;category&sol;charities &NewLine;http&colon;&sol;&sol;localhost&sol;category&sol;college &NewLine;&period;&period;&period;&period;&period;<&sol;pre>&NewLine;<p><&sol;br><&sol;p>&NewLine;<h4>วิธีใช้งาน &lowbar;remap ใน codeigniter<&sol;h4>&NewLine;<p>เริ่มต้นง่าย ๆ เลยครับ สร้าง public ฟังก์ชั่นขึ้นมาต่อจาก &lowbar;&lowbar;construct และอยู่เหนือ index &lpar; จะอยู่ล่างก็ได้ แต่เรียงไว้เพื่อสื่อถึงลำดับการทำงานของฟังก์ชั่น &rpar; <&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >public function &lowbar;&lowbar;construct&lpar;&rpar; &NewLine;&lbrace; &NewLine;&Tab;parent&colon;&colon;&lowbar;&lowbar;construct&lpar;&rpar;&semi; &NewLine;&rcub; &NewLine;public function &lowbar;remap&lpar;&dollar;method&rpar; &NewLine;&lbrace; &NewLine;&Tab;&Tab; &NewLine;&rcub; &NewLine;public function index&lpar;&rpar; &NewLine;&lbrace; &NewLine; &dollar;this-&gt&semi;load-&gt&semi;view&lpar;'welcome&lowbar;message'&rpar;&semi;&Tab;&Tab; &NewLine;&rcub;<&sol;pre>&NewLine;<p><&sol;br><&sol;p>&NewLine;<h4>วิธีรับ parameter ร่วมกับ &lowbar;remap<&sol;h4>&NewLine;<p>ในฟังก์ชั่น &lowbar;remap เราสามารถพิมพ์ชื่อ method และค่าพารามิเตอร์ ส่งและรับค่าเข้ามาได้ในลักษณะดังนี้<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >public function &lowbar;remap&lpar;&dollar;method&comma; &dollar;params &equals; array&lpar;&rpar;&rpar; &NewLine;&lbrace; &NewLine;&Tab;print &dollar;method&semi; &NewLine;&Tab;print&lowbar;r&lpar;&dollar;params&rpar;&semi; &NewLine;&rcub;<&sol;pre>&NewLine;<p>ผลลัพธ์เมื่อเราเข้าเว็บไซต์ผ่าน url &colon; http&colon;&sol;&sol;localhost&sol;welcome&sol;news&sol;11&sol;22&sol;33<&sol;p>&NewLine;<pre class&equals;"lang&colon;default highlight&colon;0 decode&colon;true " >news &NewLine;Array &lpar; &lbrack;0&rsqb; &equals;&gt&semi; 11 &lbrack;1&rsqb; &equals;&gt&semi; 22 &lbrack;2&rsqb; &equals;&gt&semi; 33 &rpar;<&sol;pre>&NewLine;<p><&sol;br><&sol;p>&NewLine;<h4>วิธีเปรียบเทียบกับเมธอดใน Controller ผ่าน &lowbar;remap ฟังก์ชั่น<&sol;h4>&NewLine;<p>ในกรณีที่ Controller ของเรามีฟังก์ชั่นหรือเมธอดที่ตรงกับตัวแปร &dollar;method ที่ถูกส่สงเข้ามาในฟังก์ชั่น &lowbar;remap เราสามารถเรียกใช้งานฟังก์ชั่นนั้น ๆ ได้ ผ่านคำสั่ง call&lowbar;user&lowbar;func&lowbar;array โดยสามารถเขียนคำสั่งได้ดังนี้<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " > &NewLine;public function &lowbar;remap&lpar;&dollar;method&comma; &dollar;params &equals; array&lpar;&rpar;&rpar; &NewLine;&lbrace; &NewLine;&Tab;if &lpar;method&lowbar;exists&lpar;&dollar;this&comma; &dollar;method&rpar;&rpar; &NewLine; &lbrace; &NewLine; return call&lowbar;user&lowbar;func&lowbar;array&lpar;array&lpar;&dollar;this&comma; &dollar;method&rpar;&comma; &dollar;params&rpar;&semi; &NewLine; &rcub;else&lbrace; &NewLine;&Tab; &dollar;this->index&lpar;&rpar;&semi;&Tab; &NewLine;&Tab; &rcub; &NewLine;&rcub; &NewLine;public function index&lpar;&rpar; &NewLine;&lbrace; &NewLine;&Tab;&dollar;this-&gt&semi;load-&gt&semi;view&lpar;'welcome&lowbar;message'&rpar;&semi; &NewLine;&rcub; &NewLine;public function news&lpar;&rpar;&lbrace; &NewLine;&Tab;&dollar;this-&gt&semi;load-&gt&semi;view&lpar;'news&lowbar;view'&rpar;&semi;&Tab; &NewLine;&rcub; &NewLine;<&sol;pre>&NewLine;<p>จากตัวอย่างโค๊ดด้านบน ถ้าเราเข้าเว็บไซต์ผ่าน url &colon; <strong>http&colon;&sol;&sol;localhost&sol;welcome&sol;news&sol;11&sol;22&sol;33<&sol;strong> ระบบจะเข้าไปทำงานในฟังก์ชั่น news ทันทีเพราะ &dollar;method ที่ส่งเข้ามาใน &lowbar;remap มีชื่อตรงกัน ในกรณีที่ไม่ตรงก็จะไปทำงานในฟังก์ชั่น index แทน<br &sol;>&NewLine;<&sol;br><&sol;p>&NewLine;<h4>วิธีประยุกต์ใช้ &lowbar;remap <&sol;h4>&NewLine;<p>ในกรณีที่เราไม่ต้องการสร้าง controller เยอะ และใน controller นั้นก็ไม่อยากให้มีเมธอดเยอะเช่นกัน อยากให้เว็บไซต์มี controller เดียว แต่ไฟล์ html หรือ view เยอะมาก เราสามารถประยุกต์ใช้ &lowbar;remap ในลักษณะนี้ได้ครับ<&sol;p>&NewLine;<pre class&equals;"lang&colon;default decode&colon;true " >public function &lowbar;remap&lpar;&dollar;method&rpar; &NewLine;&lbrace; &NewLine;&Tab;switch &lpar;&dollar;method&rpar; &lbrace; &NewLine;&Tab;&Tab;case 'business'&colon; &NewLine;&Tab;&Tab;&Tab;&dollar;this-&gt&semi;load-&gt&semi;view&lpar;'business'&rpar;&semi; &NewLine;&Tab;&Tab;&Tab;break&semi; &NewLine;&Tab;&Tab;case 'charities'&colon; &NewLine;&Tab;&Tab;&Tab;&dollar;this-&gt&semi;load-&gt&semi;view&lpar;'charities'&rpar;&semi; &NewLine;&Tab;&Tab;&Tab;break&semi; &NewLine;&Tab;&Tab;case 'college'&colon; &NewLine;&Tab;&Tab;&Tab;&dollar;this-&gt&semi;load-&gt&semi;view&lpar;'college'&rpar;&semi; &NewLine;&Tab;&Tab;&Tab;break&semi; &NewLine;&Tab;&Tab;default&colon; &NewLine;&Tab;&Tab;&Tab;&dollar;this-&gt&semi;index&lpar;&rpar;&semi;&Tab; &NewLine;&Tab;&rcub; &NewLine;&rcub;<&sol;pre>&NewLine;<p><&sol;br><&sol;p>&NewLine;

Exit mobile version