รู้จักับ Views และการใช้งาน View Cells ใน CodeIgniter 4

บทความใหม่ ไม่กี่เดือนก่อน โดย Ninenik Narkdee
codeigniter 4 view cell views codeigniter

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ codeigniter 4 view cell views codeigniter



สองบทความก่อนหน้า เราได้รู้จักกับ Controller
และการใช้งาน IncomingRequest ซึ่งเป็นส่วนหนึ่ง
ของ HTTP Request สามารถทบทวนได้ที่เนื้อหา
ตามลิ้งค์บทความด้านล่าง
    รู้จักกับ Controller และ Controller Filter ใน CodeIgniter 4 http://niik.in/997 
 
    การใช้งาน IncomingRequest ใน CodeIgniter 4 http://niik.in/998 
 
เนื้อหานี้เราจะพามาดูเกี่ยวกับ View หรือส่วนที่ใช้แสดงผลลัพธ์กลับไปแสดง เมื่อมีการ Request
หรือเรียกหน้าเพจเข้ามา
    ในการใช้งาน Controller เราเห็นการทำงานแสดงค่าข้อมูลอย่างง่าย โดยใช้คำสั่ง echo ไปแล้ว
แต่ถ้าาเราต้องการแสดงข้อมูลเว็บเพจหรือ HTML จะสามารถทำได้อย่างไร เรามาดูในเนื้อหาตอนนี้กัน
    ในตอนต้นของบทความ เกี่ยวกับ CI4 เราอาจจะเห็นวิธีการใช้งานส่วนเกี่ยวกับ view ไปบ้างแล้ว ซึ่งเป็น
ภาพรวม แต่เนื้อหานี้ เราจะมาดูการทำงานเพิ่มเติม หรือบางสิ่งที่เรายังไม่รู้ เพื่อให้การใช้งาน CI4 เป็นไปยอ่าง
มีประสิทธิภาพมากขึ้น

 
 

Views คืออะไร

    view คือส่วนของเว็บเพจ หรือบางส่วนของเพจ เช่นส่วนของ header , footer , sidebar เหล่านี้เป็นต้น โดยสามารถ
ที่จะกำหนดซ้อนๆ กันหลายๆ ขั้นได้ตามต้องการ
    โดยในรูปแบบการใช้งานแบบ MVC framework เราจะไม่สามารถเรียกใช้งาน Views ได้โดยตรง จะต้องเรียกใช้งาน
ภายใน Controller เท่านั้น ตัว Controller จะคอยจัดสรรส่วนต่างๆ ของ view มาแสดงผลตอบกลับไปยัง Request ที่ส่งเข้ามา
    เราจะใช้ Helloworld controller ในตอนที่แล้ว สาธิตการใช้งาน Views ในหัวข้อนี้
 
 

    การสร้างไฟล์ Views

    ในการสร้างไฟล์ view ใน CI4 ปกติแล้วจะสร้างไว้ในโฟลเดอร์ app/Views โดยเราสาามารถสร้างเป็นโฟลเดอร์ยอยๆ
เพื่อแยกเป็นส่วนตามต้องการได้ เราจะสร้างไฟล์ helloworld.php ไว้ในโฟลเดอร์ app/Views/pages ด้วยรูปแบบ
โครงสร้าง HTML ง่ายๆ ดังนี้
 
    app/Views/pages/helloworld.php
 
<!doctype html>
<html lang="th">
<head>
<meta charset="utf-8">
<title>Hello World Document</title>
</head>

<body>

<h1>Hello World</h1>

</body>
</html>
 
 

    การแสดงไฟล์ Views

    เมื่อเราทำการสร้างไฟล์ view ต่อไปก็จะเป็นการนำไฟล์ view ที่สร้างไปแสดง โดยใช้ฟังก์ชั่น view() กำหนด
ชื่อ parameter แรกเป็น path ของไฟล์เราสร้าง โดยเริ่มจาก app/Views หรือโฟลเดอร์ Views หลัก ดังนั้น ไฟล์
ที่เราจะใช้งานก็จะอยู่ที่ path "pages/helloworld.php" ซึ่งเราไม่ต้องกำหนดนามสกุลไฟล์ php ก็ได้  ก็จะเป็นการ
เรียกใช้งานในรูปแบบดังนี้
 
echo view('pages/helloworld');
 
    เรารู้คำสั่งที่จะเรียกใช้งานเพื่อแสดง views แล้ว  ทีนี้เราจะต้องกำหนดการใช้งานคำสั่งนี้ไว้ที่ไหน  คำตอบก็คือกำหนด
ไวไฟล์ Controller ตามที่อธิบายการทำงานด้านบน ก็จะได้ไฟล์ Helloworld.php Controller เป็นดังนี้
 
    app/Controller/Helloworld
 
<?php namespace App\Controllers; 

use CodeIgniter\Controller; // เรียกใช้งาน Controller class

class Helloworld extends Controller 
{
    public function index() 
    {
		echo view('pages/helloworld');
    }
}
 
    เมื่อเรียกไปยัง URL https://www.mysslweb.com/helloworld ก็จะได้ผลลัพธ์ดังรูปด้านล่าง
 
 

 
 
    ในการเรียกใช้งาน views ใน Controller ไม่ได้จำกัดว่าเราต้องเรียกใช้งานครั้งเดียว ไม่ได้กำหนดว่า เราต้องเรียกไป
ยังไฟล์ HTML ทั้งไฟล์ แต่เราสามารถกำหนดไฟล์ HTML แยกเป็นส่วนย่อย แล้วเรียกใช้งานด้วยฟังก์ชั่น view() ตามลำดับ
ของแต่ละส่วน ได้ สมมติเช่น เราต้องการแยกส่วนของ HTML สร้างเป็น template ให้เราสร้างโฟลเดอร์ templates
ไว้ในโฟลเดอร์ app/Views/pages แล้วกำหนดแต่ละส่วนคร่าวๆ เบื้องต้นเป็นดังนี้
 
    app/Views/pages/templates/header.php
 
<!doctype html>
<html lang="th">
<head>
<meta charset="utf-8">
<title>Hello World Document</title>
</head>

<body>
 
    app/Views/pages/templates/footer.php
 
</body>
</html>
 
    ส่วนของไฟล์ helloworld.php ก็จะเหลือแค่บรรทัดนี้
 
    app/Views/pages/helloworld.php
 
<h1>Hello World</h1>
 
    เมื่อเราเรียกใช้งานใน Controller ปรับใหม่ก็จะได้เป็น
 
<?php namespace App\Controllers; 

use CodeIgniter\Controller; // เรียกใช้งาน Controller class

class Helloworld extends Controller 
{
    public function index() 
    {
		echo view('pages/templates/header');
		echo view('pages/helloworld');
		echo view('pages/templates/footer');
    }
}
 
    ผลลัพธ์ที่ได้เมื่อเรียกไปยังหน้าเพจเดิม ก็จะได้ผลลัพธ์เหมือนเดิม เพียงแต่รูปแบบการเรียกใช้งานฟังก์ชั่น view()
เรามีการเรียกใช้งานหลายๆ view พร้อมกันแทน
 
 

    การส่งตัวแปรไปใช้งานใน Views

    เราสามารถส่งตัวแปรค่าใดๆ ไปใช้งานใน Views ได้โดยการกำหนดผ่านตัวแปร array  แล้วเรียกใช้ใน
ขึ้นตอนการใช้งานฟังก์ชั่น view() โดยกำหนดไว้ใน parameter ตัวที่ 2 
    ตัวอย่างเช่น เรากำหนดไว้ในส่วนของการใช้งาน header โดยส่งตัวแปร array มี key ชื่อ title ไปใช้งานดังนี้
 
echo view('pages/templates/header', [ 'title' => 'Hello World Documentt']);
 
    การกำหนด array เป็น parameter ตัวที่สองข้างต้น ตัว key ของ array จะเป็นชื่อตัวแปรที่เรียกใช้งานในไฟล์
header.php เราสามารถใช้งานตำแปรได้ดังนี้
 
<!doctype html>
<html lang="th">
<head>
<meta charset="utf-8">
<title><?= esc($title) ?></title>
</head>

<body>
 
    เราเรียกใช้งานตัวแปร $title โดยใช้ฟังก์ชั่น esc() สำหรับป้องกันการทำ XSS attacks
    การใช้งานฟังก์ชั่น esc()  เราสามารถกำหนดประเภทของข้อมูลให้สอดคล้องกับตัวแปรข้อมุลที่นำไปใช้ เช่น
ข้อมุลนี้นำไปใช้เป็น url , js ,css, html, หรือ attr เราก็สามารถกำหนดในรูปแบบดังนี้ได้
 
<a href="<?= esc($url, 'url') ?>" data-foo="<?= esc($bar, 'attr') ?>">Some Link</a>

<script>
        var siteName = '<?= esc($siteName, 'js') ?>';
</script>

<style>
        body {
                background-color: <?= esc('bgColor', 'css') ?>
        }
</style>
 
    การกำหนด array ของตัวแปรที่จะใช้งานใน views เราสามารถกำหนดค่าข้อมูลเป้น ตัวแปรอื่นๆ ได้เช่น array ข้อมูล
ที่ได้จากฐานข้อมูล โดยเราสามารถสร้างเป็นตัวแปร แล้วส่งค่าเข้าไปใช้งานอีกที 
    สมมติ เราจะส่งตัวแปรข้อมูลไปใช้งานไฟล์ Views ที่ชื่อ helloworld.php โดยมีหัวข้อ และข้อมูล array วันในสัปดาห์
เราสามารถกำหนดในรูปแบบดังนี้ได้
 
class Helloworld extends Controller 
{
    public function index() 
    {
		$data = [
			'title' => 'Hello World',
			'day' => ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
		];
		echo view('pages/templates/header', [ 'title' => 'Hello World Documentt']);
		echo view('pages/helloworld' ,$data);
		echo view('pages/templates/footer');
    }
}
 
    จะเห็นว่าตัวแปร $data คือ array ข้อมูลที่เราส่งไปใช้งานในไฟล์ view ชื่อ helloworld.php
    เราลองแสดงตัวแปร $title และตัวแปร $day ดังนี้ดู
 
    app/Views/pages/helloworld.php
 
<h1><?= esc($title) ?></h1>

<ul>
	<?php 
	if($day){
	foreach($day as $day_value){
	?>
	<li><?= $day_value ?></li>
	<?php
		}
	}
	?>
</ul>
 
    สังเกตว่า ตัวแปร $title ที่เราส่งเข้าไปใน header กับ $title ที่เราส่งเข้าไปใน helloworld จะเป็นคนละค่ากัน นั่นคือ
ตัวแปรที่เราจะส่งเข้าไปใน view จะใช้งานได้เฉพาะค่า view ที่กำหนดเท่านั้น
    มาดูต่อส่งที่เราส่งค่ามาใน helloworld ตัวแปร $day เป้นข้อมูล array ที่เราส่งเข้ามาใช้งาน สามารถทำการวนลูปแสดง
รายการด้วยคำสั่ง foreach() ตามรูปแบบด้านบน
    เราสามารถใช้งาน Alternative syntax หรือ shorthand syntax เพื่อกำหนดทิศทางเงื่อนไขการทำงานได้ในรูปแบบคำสั่ง
เช่น 
 
<?php if ($a == 5): ?>
A is equal to 5
<?php endif; ?>
 
<?php
if ($a == 5):
    echo "a equals 5";
    echo "...";
elseif ($a == 6):
    echo "a equals 6";
    echo "!!!";
else:
    echo "a is neither 5 nor 6";
endif;
?>
 
<?php
switch ($i):
    case 0:
        echo "i equals 0";
        break;
    case 1:
        echo "i equals 1";
        break;
    case 2:
        echo "i equals 2";
        break;
    default:
        echo "i is not equal to 0, 1 or 2";
endswitch;
?>
 
<?php
foreach($array as $element):
  #do something
endforeach;
?>
 
    คลิกดู Alternative syntax เพิ่มเติม
    
 
    ก็สามารถปรับเป็นดังนี้ได้
 
<h1><?= esc($title) ?></h1>

<ul>
	<?php 
	if($day):
		foreach($day as $day_value):
	?>
	<li><?= $day_value ?></li>
	<?php
		endforeach;
	endif;
	?>
</ul>
 
    ผลลัพธ์ที่ได้จะเป็นดังนี้
 
 

 
 
    การจำกัดตัวแปรที่ส่งเข้ามาใช้งานเฉพาะ view ที่กำหนด มีข้อดีตรงที่ป้องกันไม่ค่าตัวแปรนั้น มีผลกับ view ที่ไม่เกี่ยว
ข้องกรณีใช้ชื่อตัวแปรเดียวกัน แต่อย่างไรก็ตาม เราก็ยังสามารถส่งต่อค่าตัวแปร ในกรณีที่ต้องการใช้งานร่วมกัน สมมติเช่น
เราอยากส่งต่อตัวแปร $title ให้สามารถเรียกใช้งานใน view อื่นได้ เราก็กำหนด array ใน parameter ทีสาม โดยใช้ key
ชื่อว่า saveData มีค่าเท่ากับ true จะเป็นดังนี้
 
class Helloworld extends Controller 
{
    public function index() 
    {
		$data = [
			'day' => ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
		];
		echo view('pages/templates/header', [ 'title' => 'Hello World Documentt'], ['saveData' => true]);
		echo view('pages/helloworld' ,$data);
		echo view('pages/templates/footer');
    }
}
 
    เมื่อเรียกใช้งาน จะได้ผลลัพธ์เป็น
 
 

 
 
    ถ้าเราไม่ได้กำหนดตัวแปร $title ให้กับ helloworld ซ้ำ ค่าตัวแปรที่มาจาก header ก็จะถูกส่งมาใช้งานต่อใน helloworld
ทำให้ค่าใน <h1> เป็นค่าเดียวกันกับที่เรียกใช้งานใน header 
    การส่งต่อตัวแปร จะส่งจากบนลงล่าง เราไม่สามารถกำหนดให้ใช้งานตัวแปร จาก view ในลำดับหลังมาใช้งานใน
view ที่กำหนดก่อนได้ ตัวอย่างเช่น เราไม่สามารถใช้ตัวแปร $title จาก helloworld มาใช้งานใน header ในรูปแบบดังนี้ได้
 
// การกำหนดในลักษณะนี้ error
$data = [
	'title' => 'Hello World',
	'day' => ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
];
echo view('pages/templates/header');
echo view('pages/helloworld' ,$data ,['saveData' => true]);
echo view('pages/templates/footer');
 
    การกำหนดข้างต้นไม่สามารถใช้งานได้ เกิด error เราไม่สามารถใชตัวแปร $title จาก view ที่อยู่หลังหรืออยู่ลำดับล่างกว่า
มาลำดับบนได้
 
    สำหรับกรณีที่เราต้องการให้ทุกๆ ค่าที่ส่งเข้าไปใน view สามารถส่งต่อหรือเรียกใช้งานใน view อื่นได้ ได้ไม่ต้องคอย
กำหนด ['saveData' => true] ให้กับ view ที่เรียกใช้งาน เราสามารถไปทำการตั้งค่านี้ได้ในไฟล์ app/Config/Views.php
โดยกำหนดค่า $saveData เป็น true แต่อย่าลืมว่า การกำหนดในลักษณะนี้ จะมีผลให้ตัวแปร หากซ้ำกันอาจจะทำให้ค่าข้อมูล
ไม่ถูกต้องได้ ยังไงขึ้นกับรูปแบบการประยุกต์ใช้งาน ในที่นี้แนะนำให้กำหนดเฉพาะที่ต้องการแทน
 
 

    การ Caching Views

    ในหน้าเพจบางหน้า หรือส่วนของเพจบางส่วน เราอาจจะทำการแคชไว้ใช้งาน แทนการโหลดไปยังไฟล์ view นั้นใหม่
ทุกๆ ครั้งที่เรียกใช้ ซึ่งการแคช ก็จะช่วยให้หน้าเพจนั้น หรือส่วนของเพจส่วนนั้นโหลดมาใช้งานได้เร็วขึ้น ในบางกรณี
ที่เป็นส่วนที่ดึงข้อมูลจากฐานข้อมูล และข้อมูลก็ไม่ได้อัพเดทตลอดเวลา แทนที่เราจะให้เรียกไฟล์ view นั้นโดยตรง
เมื่อทำการแคช เราก็สามารถใช้ข้อมูลที่แคชแทนได้ ลดการทำงานของ server ลง
    เราสามารถกำหนดการแคชส่วนของ view ที่ต้องการโดยกำหนด array ใน parameter ที่สาม โดยใช้ key ชื่อว่า cache
และให้ค่าเป็นตัวเลขวินาที ที่ต้องการ เช่น  ['cache' => 60] กับชื่อไฟล์ที่จะบันทึก ใน key ชื่อว่า cache_name โดยให้ค่า
เป็นชื่อไฟล์ที่จะใช้เป็นไฟล์แคช ปกติข้อมุลแคชก็จะเป็นไฟล์ html เราจำกหนดโดยมีหรือไม่มีนามสกุลก็ได้ เช่น
['cache' => 60, 'cache_name' => 'footer'] นั่นหมายถึงว่า ให้แคชและเก็บข้อมูลแคชไว้ใช้งาน 60 วินาที
ในระหว่างที่ข้อมูลแคชยังไม่หมดอายุ ก็จะใช้ข้อมูลจากไฟล์แคชแทน แต่เมื่อครบ 60 วินาที ก็ให้ดึงข้อมูลใหม่ พร้อมกับ
แคชและเก็บไว้อีก 60 วินาทีแบบนี้ไปเรื่อยๆ นั่นคือข้อมูลใหม่จะอัพเดททุกๆ 60 วินาที เป็นตัน
    เราจะลองสมมติ ทำการแคชในส่วนของ เวลาใน footer 
 
<?= date("H:i:s") ?>
</body>
</html>
 
    เมื่อเรากำหนดการแคชในส่วนของ footer เป็นดังนี้ 
 
class Helloworld extends Controller 
{
    public function index() 
    {
		$data = [
			'title' => 'Hello World',
			'day' => ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
		];
		echo view('pages/templates/header', [ 'title' => 'Hello World Documentt']);
		echo view('pages/helloworld' ,$data);
		echo view('pages/templates/footer',[], ['cache' => 60, 'cache_name' => 'footer']);
    }
}
 
    ค่าเริ่มต้นของการใช้งานระบบ caching ใน CI4 จะเป็นการแคชเป็นไฟล์ไว้ในโฟลเดอร์ writable/cache ตามด้วยชื่อ
ไฟล์ cache ที่เรากำหนด ข้างต้นเรากำหนดชื่อว่า footer ดังนั้นไฟล์แคชก็จะถูกขึ้นไว้ที่ writable/cache/footer
    สมมติเรากำหนดให้ทำการแคช views แล้ว เมื่อเรียกใช้งานระบบจะสร้างไฟล์แคช ไว้ในโฟลเดอต์ที่บอกไปข้างต้น
แล้วต่อมา เรายกเลิก หรือลบคำสั่งแคช views ออกไป ไฟล์แคช จะยังคงอยู่ ไม่ถูกลบไปอัตโนมัติ เราต้องทำการลบไฟล์
แคชในโฟลเดอน์นั้นเอง
    ในการกำหนดแคชให้กับ views ข้างต้น ถ้าเราทดสอบการทำงาน จะพบว่า เวลา จะไม่อัพเดท จนกว่าจะครบ 60 วินาที
ซึ่งเป็นการรีเฟรสข้อมูลใหม่ พร้อมกับแคชเก็บอีกทครั้ง
    นอกจากการกำหนดการแคชเฉพาะ view ข้างต้น เราสามารถกำหนดการแคชทั้งหน้าเพจ โดยเรียกใช้งาน Controller
method ที่ชื่อว่า cachePage() ในรูปแบบดังนี้
 
$this->cachePage(60);
 
    ตัวอย่างการกำหนด
 
class Helloworld extends Controller 
{
    public function index() 
    {
		$this->cachePage(60); //แคชเพจนี้ 60 วินาที
		$data = [
			'title' => 'Hello World',
			'day' => ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
		];
		echo view('pages/templates/header', [ 'title' => 'Hello World Documentt']);
		echo view('pages/helloworld' ,$data);
		echo view('pages/templates/footer');
    }
}
 
    หน้าเพจนี้จะถูกแคชเป็นเวลา 60 วินาที เมื่อครบ 60 วินาทีก็จะโหลดข้อมูลใหม่พร้อมแคชไว้เรียกใช้งานอีก 60 วินาที
วนลูปไปเรื่อยๆ ซึ่งการแคชหน้าเพจทั้งหน้าก็ถือว่าเป็นวิธีทีดีสำหรับจัดการกับหน้าข้อมูลที่แทบจะไม่ได้อัพเดทบ่อยนัก
ตามเหตุผลของการลดการทำงานของฝั่ง server ที่กล่าวไปแล้วข้างต้น
 
 
 

การใช้าน View Cells

    ถึงแม้ว่า Views จะต้องถูกเรียกใช้งานจาก Controller ผ่านฟังก์ชั่น view() เท่านั้น  แต่ใน CI4 ก็ยังมีอีกฟังก์ชั่น ชื่อว่า
view_cell() ที่ทำให้เราสามารถเรียกใช้งาน view หรือทำการแทรก HTML ที่สร้างนอก Controller ได้ โดยเป็นลักษระการ
ทำงานที่เป็นการระบุ Class และ method ที่จะใช้งาน โดย Class และ method นั้นๆ จะคืนค่ากลับมาเป็น HTML โดยมีข้อจำ
กัดของการใช้งาน class นั้นว่า จะต้องไม่มีการกำหนด parameter ให้กับ contructor ดูตัวอย่างการเรียกใช้ด้านล่าง
 
<?= view_cell('\App\Libraries\Blog::recentPosts') ?>
 
    ในตัวอย่าง class "App\Libraries\Blog ถุกโหลดเข้ามาใช้งาน แล้วเรียกใช้คำสั่ง recentPosts() โดยต้องคืนค่ากลับมา
เป็น HTML ในรูปแบบข้อมูล String 
 
    

    การกำหนด parameter 

    ในบางครั้ง method ที่เราใช้งาน อาจจะต้องการค่า parameter สำหรับกำหนดเป็นเงื่อนไขการทำงาน เราสามารถ
ส่งค่า parameter เข้าไปในรูปแบบข้อมูล array ใน paramger ตัวที่สองของฟังก์ชั่น view_cell() โดยสามารถอยู่ในรูปแบบ
array เป็น key/value หรือ รูปแบบข้อความแยกด้วย comma ของค่า key/value  ตามตัวอย่างการกำหนดด้านล่าง
 
// กำหนดในรูปแบบ Parameter Array
<?= view_cell('\App\Libraries\Blog::recentPosts', ['category' => 'codeigniter', 'limit' => 5]) ?>
 
// กำหนดในรูปแบบ  Parameter String
<?= view_cell('\App\Libraries\Blog::recentPosts', 'category=codeigniter, limit=5') ?>
 
    บางส่วนของตัวอย่าง method ที่ใช้งาน
 
// บางส่วนของ method ของ class ที่ใช้งาน
public function recentPosts(array $params=[])
{
    $posts = $this->blogModel->where('category', $params['category'])
                             ->orderBy('published_on', 'desc')
                             ->limit($params['limit'])
                             ->get();

    return view('recentPosts', ['posts' => $posts]);
}
 
    หรือจะกำหนดในรูปแบบของ parameter name ซึ่งถ้าใช้ในรูปแบบด้านล่างนี้ ค่าทุกตัวจะต้องถูกเรียกใช้งาน
ใน method ตามตัวอย่างด้านล่าง
 
<?= view_cell('\App\Libraries\Blog::recentPosts', 'category=codeigniter, limit=5') ?>
 
    บางส่วนของตัวอย่าง method ที่ใช้งาน
 
// บางส่วนของ method ของ class ที่ใช้งาน
public function recentPosts(int $limit, string $category) // กำหนดแบบ parameter name
{
    $posts = $this->blogModel->where('category', $category)
                             ->orderBy('published_on', 'desc')
                             ->limit($limit)
                             ->get();

    return view('recentPosts', ['posts' => $posts]);
}
 

    การ Caching Cell

    เช่นเดียวกันกับการใช้งาน Views ใน Cell เราก็สามารถทำการแคชได้ง่าย โดยกำหนด parameter ตัวที่ สามเป็น
เวลาในหน่วยวินาที และตัวที่สี่เป็นชื่อไฟล์ที่ต้องการ ดูการใช้งานเบื้องต้นตามโค้ดด้านล่าง
 
// แคชข้อมูลทุก 5 นาที มาจากค่า 60 * 5 เท่ากับ 300 วินาที
<?= view_cell('\App\Libraries\Blog::recentPosts', 'limit=5', 300, 'newcacheid') ?>
 
    ก่อนจบ เรามาจำลองทดสอบการใช้งาน View Cell โดยให้สร้างไฟล์ชื่อ test.php ไว้ในโฟลเดอร์ 
 
    app/Views/pages/test.php
 
<h2>This is test title</h2>
 
    จากนั้นสร้าง class ไว้ในโฟลเดอร์ app/Libraries ชื่อว่า Blog.php
 
<?php namespace App\Libraries; 

class Blog 
{
    public function test() 
    {
		return view('pages/test');
    }
}
?>
 
    class "Blog" ใช้ namespace เป็น "App\Libraries" มี method test() ทำการแสดงข้อมุล view ของไฟล์ test.php
    ต่อไปเราจะแทรก HTML ที่ได้จากการเรียกใช้งาน class Blog ทำคำสั่ง method test() โดยใช้ฟังก์ชั่น view_cell()
ในไฟล์ helloworld.php
 
    app/Views/pages/helloworld.php
 
<h1><?= esc($title) ?></h1>

<?= view_cell('\App\Libraries\Blog::test') ?>

<ul>
	<?php 
	if($day):
		foreach($day as $day_value):
	?>
	<li><?= $day_value ?></li>
	<?php
		endforeach;
	endif;
	?>
</ul>
 
    ทดสอบรัน จะได้ผลลัพธ์ดังนี้
 
 

 
 
    จะเห็นว่าฟังก์ชั่น view_cell() จะได้ html มาแทรกเข้าไปในไฟล์ views ที่ชื่อ helloworld.php เป็นการเรียกใช้งาน
view จากนอก class "Blog" ซึ่งอยู่นอก Controller
 
    เนื้อหาแนวทางการใช้งาน Views โดยใช้ฟังก์ชั่น view() และ view_cell() เบื้องต้นก็จะประมาณนี้ หวังว่าจะเป็นแนวทาง
ทำความเข้าใจ และประยุกต์ใช้งานในลำดับต่อๆ ไปได้


กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ



อ่านต่อที่บทความ









เนื้อหาที่เกี่ยวข้อง






เนื้อหาพิเศษ เฉพาะสำหรับสมาชิก

กรุณาล็อกอิน เพื่ออ่านเนื้อหาบทความ

ยังไม่เป็นสมาชิก

สมาชิกล็อกอิน



( หรือ เข้าใช้งานผ่าน Social Login )




URL สำหรับอ้างอิง











เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ