Long Live The King
ข้าพเจ้าไม่ได้มีพรสวรรค์พิเศษอะไร ข้าพเจ้าเพียงแต่มีความกระหายใคร่รู้อยู่เสมอ ทุ่มเทให้กับสิ่งที่อยากรู้ พากเพียรอย่างทรหด และสำรวจวิจารณ์ความรู้ของตัวเองเป็นประจำ ปัจจัยเหล่านี้คือที่มาของแนวคิดต่างๆ ของข้าพเจ้า .... อัลเบิร์ต ไอน์สไตน์

วันศุกร์ที่ 22 พฤศจิกายน พ.ศ. 2556

สวัสดี ชาวโลก กับ Codeigniter



ในบทความนี้เดี๋ยวผมจะแนะนำให้ท่านรู้จักกับ ชาวโลก แอ๊ะ! ยังไง... ไม่ใช่ เดี๋ยวเรามาสร้างเพจแรกกันด้วยการ แสดงคำว่า "Hello World" คำๆนี้สำหรับคนเรียนเขียนโปรแกรมจะต้องรู้จักเป็นอย่างดี ผมเองก็สงสัยว่าคำๆนี้มีที่มา อย่างไร ทำไมตอนเริ่มหัดเขียนโปรแกรมจะต้อง "Hello World" ตลอดเลย มาถึงตอนนี้ท่านอาจจะบ่นว่า "จะอะไรกันนักกันหนากับคำๆนี้" ผมก็ว่างั้น อิอิ.... ok เดี๋ยวเราไป Hello World กันดีกว่าครับ...

เริ่ม
ต่อไปนี้คือพาธของคำที่กล่าวถึง

models      คือ application/models/
controllers คือ application/controller/
views       คือ application/views/

ให้ท่านสร้างไฟล์ที่ controllers ตั้งชื่อว่า home.php ในไฟล์นี้เราจะเขียน class ขึ้นมาหนึ่ง class ชื่อว่า Home
ตามรูปแบบของ Codeigniter ดังนี้
class Home extends CI_Controller{
    
   // do someting....
    
}
ท่านอย่าลืมนะครับว่าชื่อ class กับชื่อไฟล์ต้องเหมือนกัน จากนั้นผมก็จะสร้าง method หรือ function ขึ้นมาแบบนี้
class Home extends CI_Controller{
    
    public function index()
    {
        echo "Hello World";
    }
    
}
ก่อนที่จะรันดูผลงานก็ให้ท่านเข้าไปที่ application/config/routes.php
ให้ปรับแก้บรรทัดนี้ 
$route['default_controller'] = "home";
ด้วยการเปลี่ยนจาก welcome มาเป็น home จากนั้นท่านก็ลองรันดู ถ้าไม่มีปัญหาอะไรท่านก็จะเห็นคำว่า Hello World

แต่หลักการแบบ MVC นั้น echo "Hello World"; จะต้องไปเก็บไว้ที่ views ถึงจะถูกต้องตามเจตนารมณ์ของ
Codeigniter ดังนั้นเราก็ต้องไปสร้างไฟล์ที่ views ชื่อว่า home_v.php ในไฟล์นี้ผมก็จะเขียนแบบนี้ 
<!DOCTYPE html">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <h3>Hello World</h3>
        <?php
        echo "Hello World";
        ?>        
    </body>
</html>
จากนั้นเราก็ไปกำหนดให้ controllers เรียก views ขึ้นมาแสดงด้วยโค้ดนี้
$this->load->view('...ชื่อไฟล์ที่ต้องการเรียก...');
class Home extends CI_Controller{
    
    public function index()
    {
        $this->load->view('home_v');
    }
    
}
มาถึงตอนนี้ท่านก็สามารถที่จะใช้ controller เรียกไฟล์จาก views มาแสดงได้แล้ว

ส่งข้อมูลจาก controllers ไปให้ views ทำอย่างไร
เราจะสร้างตัวแปรขึ้นมา เก็บค่าคำว่า I Iove Codeigniter.แบบนี้
$data['mydata'] = "I Love Codeigniter.";
แล้วเราก็จะส่งไปแสดงที่ views แบบนี้
$this->load->view('home_v', $data);
ตัวอย่าง
class Home extends CI_Controller{
    
    public function index()
    {
        $data['mydata'] = "I Love Codeigniter.";
        $this->load->view('home_v', $data);
    }
    
}
จากนั้นเราก็ไป echo ตัวแปรที่เราสร้างขึ้นที่ views แบบนี้
<html>
    <head>
        <title></title>
    </head>
    <body>

        <?php
        echo $mydata;
        ?>

    </body>
</html>
ในกรณีที่ตัวแปรเก็บค่าแบบ Array แบบนี้ 
$data['mydata'] = array(
    'name' => 'bookneo',
    'password' => '123',
    'email' => 'bookneo@bookneo.com'
);
เราก็ยังคงส่งค่าไปแสดงที่ views แบบเดิม
$this->load->view('home_v', $data);
ตัวอย่าง
class Home extends CI_Controller{
    
    public function index()
    {
        
        $data['mydata'] = array(
        'name' => 'bookneo',
        'password' => '123',
        'email' => 'bookneo@bookneo.com'
        );
        
        $this->load->view('home_v', $data);
    }
    
}
แล้วเราก็ไปวนลูปแสดงที่ views ด้วย foreach แบบนี้
<!DOCTYPE html">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <h3>Hello World</h3>
        <ul>
        <?php
           foreach($mydata as $item){
               echo '<li>'.$item.'</li>';
           }
        ?>        
        </ul>
    </body>
</html>
มาถึงตอนนี้เราก็สามารถส่งค่าต่างๆไปให้กับ view พร้อมทั้งใช้ controller เรียก view ขึ้นมาแสดงด้วย
สำหรับบทความนี้ก็ขอจบเพียงเท่านี้ครับ....



0 ความคิดเห็น:

แสดงความคิดเห็น

© Bookneo, AllRightsReserved.

ขับเคลื่อนโดย Blogger Designed by Nikhorn Thongchuay