PHP Codeigniter เน้นใช้งาน : ตอน 2 รับส่งค่าระหว่าง views และ controllers

php-codeigniter-framework
php-codeigniter-framework

PHP Codeigniter เน้นใช้งาน : ตอน 2 รับส่งค่าระหว่าง views และ controllers

จากบทความที่แล้วเราได้ทำความเข้าใจเบื้องต้น ตั้งแต่การดาวน์โหลดไฟล์ จนถึงขั้นตอนการติดตั้ง codeigniter
บทความนี้เราจะเริ่มลงมือเขียนโปรแกรม โดยเริ่มจากการสร้างไฟล์ views และ controllers
ไปจนถึงการรับส่งตัวแปรระหว่างกัน

อ่านบทความ ตอน 1 ดาวน์โหลดและติดตั้ง codeinginter

1. เปิดโฟลเด้อโปรเจคของเราครับ ไปที่ application/controllers/Welcome.php
เปิดไฟล์ Welcome.php กับโปรแกรม editor ทั่วไป ทำการแก้ไขชื่อ class เป็น Home ลบ comment text ออกไป
และเซฟไปที่ path เดิมตั้งชื่อไฟล์ว่า application/controllers/home.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Home extends CI_Controller {
	public function index()
	{
		$this->load->view('welcome_message');
	}
}

หลักการตั้งชื่อ class ในภาษาพีเอชพี จะต้องขึ้นต้นด้วยอักษรตัวพิมพ์ใหญ่ ส่วนชื่อไฟล์เป็นตัวพิมพ์เล็กก็ได้ครับ
จะสังเกตุเห็นว่าทุก class ใน application/controllers/ จะต้องทำการ extends คลาสหลักของ CI
คือ CI_Controller

1.1 เราได้โค๊ดต้นแบบของไฟล์ controllers มาแล้วต่อไปเราจะทดลองส่งค่าตัวแปรออกไปแสดงผลในส่วนของ views กันนะครับ
ในการส่งค่าออกไปให้ view นั้นเราจะส่งไปในรูปแบบของตัวแปรแบบ array ครับ
โดยให้เราทดลองสร้างตัวแปรแบบ array ขึ้นมาและกำหนดค่าให้ตัวแปรครับ

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Home extends CI_Controller {
	public function index()
	{
		$data['title'] = "หน้าแรก";
		$this->load->view('welcome_message');
	}
}

จากนั้นให้เราเปลี่ยนการโหลด views จาก welcome_message เป็น home_view

home_view มาจากไฟล์ home_view.php แต่ตอนใช้คำสั่ง load->view ของ ci ไม่ต้องใส่นามสกุลของไฟล์ครับ เป็นไฟล์ที่เราจะสร้างไว้ในโฟลเด้อ views ซึ่งเป็นไฟล์ที่จะประมวลผลในโค๊ดในส่วน front-end คือ html,css,javascript )
การส่งตัวแปรจาก controllers ไป views สำหรับ ci แล้วง่าย ๆ เลยครับแค่เพิ่ม parameter เข้าไปต่อจากชื่อไฟล์ เราก็จะได้โค๊ดดังนี้ครับ

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Home extends CI_Controller {
	public function index()
	{
		$data['title'] = "หน้าแรก";
		$this->load->view('home_views',$data);
	}
}

เสร็จโค๊ดในส่วนของ controllers

2. หลังจากที่เราได้สร้าง home.php ที่เป็น controllers และส่งตัวแปรออกมาแล้ว ตอนนี้เราจะยังไม่สามารถ
ทดสอบโค๊ดที่เราเขียนไว้ได้ จนกว่าเราจะสร้างไฟล์ home_view.php ที่ตัว home controllers ได้ทำการเรียกโหลดไปแสดงผล

ขั้นตอนการสร้างไฟล์ home_view.php ก็ง่าย ๆ ครับ เปิดโปรแกรม editor ใส่โค๊ด html
เสร็จแล้วเซฟไฟล์ไปที่ application/views/home_view.php

ใน home.php ซึ่งเป็น controllers ที่เราได้สร้างไว้ เราได้ส่งตัวแปรแบบ array
ที่ชื่อว่า $data มาให้ home_view.php
ให้ทดสอบโดยการ echo $title ดูครับว่าตัวแปรนี้ได้ถูกส่งออกมาอย่างถูกต้องหรือป่าว
จะได้โค๊ดในไฟล์ home_view.php ประมาณนี้ครับ

<html>
    <head>
        <title><?php echo $title; ?></title>
    </head>
    <body>
    	<?php echo $title; ?>
    </body>
</html>

หากโค๊ดที่เราเขียนถูกต้องทั้งทางฝั่ง controllers และ views ผลลัพธ์ที่ได้เราจะเห็นค่าของตัวแปร $title
แสดงประมาณรูปด้านล่างครับ

codeigniter การรับส่งค่าระหว่าง controllers และ views

เจอกันใหม่ตอนหน้าครับ PHP Codeigniter เน้นใช้งาน