jQueryTips by Tee++;

  • Home
  • Videos
  • jQueryTips's Fans

Coding like playing a piano.

Subscribe RSS

Search

Search

Sponsored

jQueryTips on Social

Followers

hide
Chainnnn Pang25441 Dexteri@n Ton KanexKane Supachai JustDoIt Rut petchy Tophit anndrew Webmaster

Categories

hide
  • Programing
  • Database
  • Framework
  • Mobile Development
    • Titanium Mobile
    • PhoneGap
  • Life

Tag Cloud

hide
PHP JavaScript MySQL XML Mobile jQuery CodeIgniter Hash php xml Debug Library Zend API Events Plugins Facebook Basic Registration Tool Twitter Search Swath Performance ffmpeg YouTube Web Service Yahoo! NoSQL MongoDB PhoneGap

Recent Posts

hide
  • ใครๆ ก็มี Utils เอางี้เราเพิ่ม Utils ให้กับ CodeIgniter กันบ้าง
  • แนะนำ JS.Class (A JavaScript class library)
  • PHP กับ OOP มาปูพื้นฐานกันเสียใหม่ก่อน
  • ประกาศข่าวสารจาก Admin
  • JSFIDDLE สุดยอด Tools สำหรับการ Debug การเขียนตัวอย่างโคด
  • Titanium Mobile + HTML + Native Scrolling
  • HTML to PDF ตัวไหนดี วันนี้ผมมีคำตอบ ...
  • ทำความรู้จักกับ JavaScript Pattern ในเชิงลึก
  • ผมบอกคุณแล้ว .... คนโง่ก็ Code ได้
  • วันนี้ มาออกแบบ Web Service ด้วย PHP กันเถอะ (CodeIgniter Version)

Recent Comments

hide
  • เยดดดด
  • มีตัวอย่าง CI แบบ เพียว ๆ ไหมครับ
  • ขอบคุณมากครับ เห็นแนวทางได้ชัดขึ้นจากตอนแรก ที่งงไปหมด ไม่รู้อะไรเป็นอะไร
  • ขอบคุณมากเลยครับท่าน....แหม่เพิ่มกำลังใจให้ผมได้เยอะเลย ตอนนี้กำลังฝึกงานอยู่ที่แห่งนึงในหาดใหญ่ พร้อมเด็กจากอีกสถาบันนึง 3 คน เราคิดว่าเรา…
  • Very good blog, I really like ~

Links

hide
  • OSCOOL
  • Architeture & Performance
  • Video and TV
  • Appcelerator
  • PhoneGap
  • Home
  •  » Blogs

[CI Day 7] ปรับเปลี่ยนเส้นทางได้อย่างใจด้วย Route

Jan 8, 2009 10:44:28 PM | 1 Comments | in Framework | CodeIgniter
หายไปนานเหมือนกันเลยรอบนี้ เนื่องจากปัญหาทางด้านสุขภาพนิดหน่อย ช่วงนี้เป็นหวัดงอมเลยครับ พอหลังจากปีใหม่ก็ โทรมมายาวเลย แต่กลัวเนื้อหามันจะขาดช่วงไป ยังไงวันนี้ก็ฝืนสังขาร มาอัพเดทกันซะหน่อยแล้วกัน

ก่อนอื่นผมขออธิบาย เรื่อง Route ของ Framework กันซะก่อน ไม่เพียงแต่เฉพาะ CI โดยหลักแล้วการแสดงผล URL ที่แท้จริงของ Framework นั้นจะเป็นในลักษณะนี้ครับ
http://www.domain.com/index.php/controller/method/argv1/argv2


จะสังเกตุได้ว่า ทุกอย่างจะโดน Process ผ่านไฟล์เดียวคือ index.php นั่นเอง ซึ่ง Software หลายๆ ตัวก็มักจะใช้วิธีนี้ เช่น WordPress ที่ผมกำลังใช้เขียนบทความอยู่นี้ก็ด้วย

ดังนั้นหลังจากเรา Rewrite url ด้วย .htaccess เอา index.php ออกไป เราก็จะได้ url ที่สวยงามเป็น
http://www.domain.com/controller/method/argv1/argv2


ทีนี้ถ้าเราอยากจะทำ Rewrite url ต่อล่ะ ทำไง? ไปเขียนใน .htaccess ต่อเหรอ

คำตอบคือ "ไม่ใช่"

Framework ทุกตัว มักจะมีส่วนการแก้ไข route ที่เป็นเส้นทางในการวิ่งของ url มาให้แล้ว รวมถึง CI เราลองมาดูกันว่าจะทำยังไงกันได้บ้าง

สมมุติ ผมเขียน application จำพวก blog, shop ที่ user สามารถเข้ามาเปิดร้านเอง url มันก็ควรจะเป็น
http://www.domain.com/~username/

(เดี๋ยวจะบอกว่าทำไมต้องมี ~ ด้วย)

ใช่มั้ยล่ะครับ แต่เนื่องจาก CI มันจะมอง segment ที่ 1 เป็น Controller ไปซะฉิบ ทีนี้ทำไงดี?

เราก็แก้ปัญหาโดยการใช้ route ของ CI โดยเข้าไปที่ไฟล์
/application/config/routes.php

แล้วเพิ่มตามตัวอย่างข้างล่างเข้าไปที่ ไฟล์
$route['~(.*)/([a-zA-Z0-9]+)(/.*)'] = 'userapp/$2/$1';

$route['~(.*)'] = 'userapp/index/$1';


จากนั้นไปสร้าง Controller ที่มีชื่อว่า userapp.php ขึ้นมาแล้วเขียนลงไปตามนี้
<?php
class Userapp extends Controller {
 
        function __construct()
        {
                parent::Controller();
        }
 
        function index($user)
        {
                echo $user;
        }
 
        function method($user)
        {
                echo "method: ".$user;
        }
 
}
?>


ที่นี้ลองมารันดู ตามตัวอย่าง
http://localhost/CodeIgniter/~tee

http://localhost/CodeIgniter/~tee/method/ssss


ก็จะได้ผลลัพธ์คือ อันแรก ก็จะเข้า method:index โดยอัตโนมัติ
ส่วนอันที่ 2 ก็จะเข้า method:method

ถ้าอยากได้ค่้า ssss เราก็จะ get ออกมาโดยใช้
$this->uri->segment(3) นั่นเอง

ส่วนที่จำเป็นต้องมี ~ เพราะว่า เราไม่รู้ว่า user จะใช้ชื่ออะไร จึงจำเป็นต้องมี prefix ตัวนึงมาบอกครับ ว่าถ้ามีเครื่องหมายแบบนี้ จะให้เป็นการทำงานของหน้า user

นี่ล่ะครับ Concept ของ Route แต่ว่า ผมบอกไว้ก่อนเลย วิธีนี้ "ไม่เนียน" ครับ ซึ่งการทำ application แบบ open service มันจะต้องได้รูปของ url ที่ดีกว่านี้ เช่น
http://username.domain.com or http://domain.com/username


ไม่ใช่มีตัว ~ มาด้วย ที่เขียนวันนี้ เพราะต้องการให้เข้าใจ concept ของการใช้งาน route เท่านั้น ซึ่งคราวหน้าผมจะมาบอกเรื่องการ hack core ของ route โดยการ extends เข้ามาแก้ไข ทีนี้เราอยากให้ url เป็นยังไง ก็เหมือนเสกได้ตามใจนึกล่ะครับ (ก็เล่นเข้ามาถึง core เลย นี่) ยังไงรอติดตามกันนะครับ กับบทความหน้า

twitter stumbleupon delicious digg facebook

1 comments

Add comment Load previous All comments

Leave a comment

Post Comment

Powered by OSCOOL. You may view this on RSS or ATOM.

OSCOOL

  • Twitter
  • Facebook
  • Next