Views (ส่วนแสดง)
View หรือส่วนแสดง เป็นหน้าเว็บแบบทั่วไป หรืออาจจะเป็นส่วนต่างๆของหน้าเว็บเพจ อย่างเช่น ส่วนหัว, ส่วนท้าย, แถบด้านข้าง, หรืออื่นๆ อันที่จริง view (ส่วนแสดง) ตัวมันสามารถที่จะฝัง(เป็นส่วนประกอบ) ไว้ใน view (ส่วนแสดง) อื่นได้ ถ้าคุณต้องการแบบลักษณะเป็นโครงสร้างลำดับชั้น
View (ส่วนแสดง) จะไม่ถูกเรียกโดยตรงๆ แต่ controller (ตัวควบคุม) จะเป็นตัวเรียก จำไว้ว่าเรามีแนวคิดแบบ MVC , Controller (ตัวควบคุม)เหมือนกับเป็นตำรวจจราจร ซึ่งมันจะทำหน้าที่ตอบสนองโดยการดึง view (ส่วนแสดง) ถ้าคุณยังไม่ไ่ด้อ่านเนื้อหาของ Controllers คุณต้องอ่านก่อนเลย ก่อนที่จะไปต่อ
ใช้ตัวอย่างในบท controller (ตัวควบคุม)ของคุณ แล้วเพิ่ม view (ส่วนแสดง)เข้าไป
สร้าง View (ส่วนแสดง)
ใช้เท็กซ์เอดิเตอร์ของคุณ ส้รางไฟล์ blogview.php แล้วนำโค้ดข้างล่างนี้ไปใส่:
แล้วบันทึกไว้ในโฟลเดอร์ application/views/
โหลด View (ส่วนแสดง)
เพื่อที่จะโหลด view (ส่วนแสดง) เฉพาะเจาะจง คุณควรใช้ฟังก์ชันข้างล่างนี้:$this->load->view('name');
name เป็นชื่อของไฟล์ view (ส่วนแสดง) ของคุณ
หมายเหตุ: ส่วนขยาย .php ไม่ต้องระบุลงไปด้วย แม้คุณจะใช้นามสกุลอื่นนอกเหนือจาก .php ก็ตาม ก็ไม่ต้องระบุไป
เปิดไฟล์ controller (ตัวควบคุม)ที่คุณได้สร้างไว้ก่อนหน้านี้ blog.php แล้วแทนด้วยชื่อ view (ส่วนแสดง) ที่คุณจะทำการโหลด ดังนี้:
ถ้าคุณเรียกดูหน้าที่คุณได้ทำข้างต้น คุณจะเห็น view (ส่วนแสดง)อันใหม่ URL ที่ใช้เรียกดูจะมีหน้าตาแบบนี้:example.com/index.php/blog/
โหลด view (ส่วนแสดง) แบบหลายตัว
CodeIgniter มีความอัจฉริยะในการจัดการการเรียกแบบหลายๆตัว (การเรียก view (ส่วนแสดง)พร้อมกัน ถ้ามีหลายตัวถูกเรียกพร้อมกันมันก็จะถูกเพิ่มเข้าไปด้วยกัน ตัวอย่าง คุณมี view (ส่วนแสดง)ส่วนหัว, view (ส่วนแสดง)เมนู, view (ส่วนแสดง)เนื้อหา, และ view (ส่วนแสดง)ส่วนท้าย รูปแบบการเรียกจะเป็นลักษณะนี้:
<?php
class Page extends Controller {
function index()
{
$data['page_title'] = 'Your title';
$this->load->view('header');
$this->load->view('menu');
$this->load->view('content', $data);
$this->load->view('footer');
}
}
?>
ตัวอย่างข้างบนนั้นเราใช้การเพิ่มข้อมูลแบบพลวัติ(เปลี่ยนแปลงอยู่ตลอดเวลา), ซึ่งจะเห็นในข้างล่างต่อไปนี้
เก็บ view (ส่วนแสดง)ไว้ในโฟลเดอร์ย่อย
view (ส่วนแสดง)ของคุณสามารถเก็บไว้ในโลเดอร์ย่อยได้ ถ้าคุณชอบวิธีการแบบนี้ ถ้าคุณทำวิธีนี้คุณก็ต้องระบุชื่อโฟลเดอร์นั้นเพื่อที่จะโหลด view (ส่วนแสดง)ที่อยู่ในโฟลเดอร์นี้ ดังตัวอย่าง:$this->load->view('folder_name/file_name');
เพิ่มข้อมูลแบบพลวัติ(เปลี่ยนแปลงอยู่เสมอ)ให้กับ view (ส่วนแสดง)
ข้อมูลที่ส่งจาก controller (ตัวควบคุม)ให้กับ view (ส่วนแสดง)โดยส่งเป็น อาเรย์ หรือ แบบวัตถุ ผ่านพารามิเตอร์ตัวที่สองของฟังก์ชันโหลด view (ส่วนแสดง) ตัวอย่างนี้เป็นการส่งข้อมูลแบบใช้อาเรย์:$data = array(
'title' => 'My Title',
'heading' => 'My Heading',
'message' => 'My Message'
);
$this->load->view('blogview', $data);
แล้วนี่เป็นตัวอย่างที่ใช้ข้อมูลที่เป็นวัตถุส่ง:$data = new Someclass();
$this->load->view('blogview', $data);
หมายเหตุ: ถ้าคุณใช้วิธีส่งแบบวัตถุ ตัวแปรต่างๆของคลาสจะถูกคืนค่าเป็นอาเรย์ มาลองทำในไฟล์ controller (ตัวควบคุม)ของคุณ เปิดไฟล์แล้วเพิ่มโค้ดนี้ลงไป:
ทีนี้เปิดไฟล์ view (ส่วนแสดง)ขึ้นมาแล้วเพิ่มตัวแปรที่เหมือนกับคีย์ของอาเรย์ของข้อมูลของคุณ:
แล้วทำการโหลดหน้านี้ด้วย URL ที่คุณเคยใช้มาคุณจะเห็นข้อมูลที่มาจากตัวแปรแสดงออกมาแทนแบบเดิม
การสร้างแบบใช้การวนรอบ
ข้อมูลแบบอาเรย์ที่คุณส่งไปให้กับไฟล์ view (ส่วนแสดง) ไม่ใช่แค่จะเป็นข้อมูลธรรมดาๆเท่านั้น แต่สามารถเป็นอาเรย์แบบหลายมิติได้ ซึ่งสามารถวนรอบตัวแปรเหล่านี้เพื่อสร้างแถวข้อมูลแบบหลายๆแถวได้ มาดูตัวอย่างถ้าคุณดึงข้อมูลออกมาจากฐานข้อมูลปกติเนี่ยมันจะออกมาในรูปแบบอาเรย์หลายมิติ
นี่คือตัวอย่างของหัวข้อที่กล่าวมา นำโค้ดนี้เพิ่มเข้าไปใน controller (ตัวควบคุม)ของคุณ:
แล้วเปิดไฟล์ view (ส่วนแสดง) แล้วเขียนแบบนี้:
หมายเหตุ: ตัวอย่างข้างบนเราเขียน PHP อีกแบบนึง ถ้า ถ้าคุณไม่คุ้นละก็ให้คุณลองไปอ่านที่นี้ดู
คืนค่าจาก view (ส่วนแสดง)ออกมาเป็นข้อมูล
พารามิเตอร์ตัวที่สามเป็นตัวเลือกที่ให้คุณเปลี่ยนวิธีการคืนค่าออกมาจากฟังก์ชันเป็นสตริงได้แทนที่จะส่งผลลัพธ์ไปให้กับบราวเซอร์เลยโดยตรง มันจะเป็นประโยชน์มากถ้าคุณต้องการประมวลผลข้อมูลในบางวิธี ถ้าตั้งค่าให้พารามิเตอร์ตัวนี้เป็น true (บูลีน) การคืนค่าจะออกมาเป็นข้อมูล ถ้าตั้งค่าเป็น false ซึ่งเป็นค่าโดยปริยายอยู่แล้วมันจะส่งผลลัพธ์ไปให้บราวเซอร์เลยโดยตรง$string = $this->load->view('myfile', '', true);
ซึ่งจริงๆแล้วมักถูกใช้เวลาที่ต้องคำนวณ view ในหน้านั้นให้เสร็จก่อนเพื่อนำไปใช้ร่วมกับ view อื่นๆ