View
View base class
\Somtum\View
คลาสแม่แบบสำหรับ View ของ Somtum หน้าที่หลักๆของคลาสนี้คือเป็น Template Engine ซึ่งสำหรับ Somtum แล้วจะมีการจัดการ Template แยกต่างหากจาก View โดยให้ View ทำหน้าที่ในการเตรียมการแสดงผล เพื่อลดความซับซ้อนของโค้ดใน Controller และเพื่อให้ไฟล์ Template ที่เป็น Html แยกออกต่างหากจาก View
- $view->setContents($array);
คำสั่ง setContents สำหรับกำหนดค่าของตัวแปรต่างๆลงใน Template โดยมีพารามิเตอร์ $array สำหรับกำหนดค่าตัวแปรและข้อมูลที่จะแสดงในแบบ array(patt => value, patt => value ...) - $view->setContentsAfter($array);
คำสั่งนี้จะคล้ายๆ setContents ต่างกันแค่ตัวแปรจะถูกแทนที่เป็นลำดับสุดท้าย โดยที่ตัวแปรจาก setContents จะถูกแทนที่เป็นลำดับแรก ตามด้วยด้วยตัวแปรของระบบ และปิดท้ายด้วยตัวแปรจาก setContentsAfter - $view->setMetas($array);
คำสั่ง setMetas สำหรับกำหนด meta ที่จะใส่ลงในส่วน <head> ของ HTML เช่นพวก keywords หรือ description ดังตัวอย่าง$view->setMetas(array(
'description' => '<meta name=description content="รายละเอียดของ Description" />',
'keywords' => '<meta name=keywords content="รายละเอียดของ Keywords" />',
)); - $view->addCSS($url);
คำสั่ง addCSS สำหรับเพิ่มไฟล์ CSS ลงในส่วน <head> ของ HTML พารามิเตอร์เป็น URL แบบเต็มๆของไฟล์ CSS - $view->addJavascript($url);
คำสั่ง addJavascript สำหรับเพิ่มไฟล์ Javascript ลงในส่วน <head> ของ HTML พารามิเตอร์เป็น URL แบบเต็มๆของไฟล์ Javascript - $view->addScript($array);
คำสั่ง addScript สำหรับเพิ่มคำสั่งของ Javascript ซึ่งจะถูกใส่ลงในส่วน <head> ของ HTML - $view->renderHTML($template);
คำสั่ง renderHTML ใช้สำหรับสั่งให้ View ประมวลผล และ คืนค่ากลับมาเป็น HTML คำสั่งนี้มีพารามิเตอร์ 1 ตัว คือ $template ถ้าไม่ระบุค่านี้ จะไปโหลดไฟล์ index.html ของ Template ที่ใช้งานงานอยู่มาประมวลผล
คำสั่ง renderHTML จะมีการแทนที่ตัวแปรเริ่มต้นให้ได้แก่- {WEBTITLE} แทนที่ด้วยค่าจาก self::$cfg->web_title
- {WEBDESCRIPTION} แทนที่ด้วยค่าจาก self::$cfg->web_description
- {WEBURL} แทนที่ด้วย URL ของเว็บไซต์หรือจาก WEB_URL
- {SKIN} แทนที่ด้วยชื่อ Template เช่น skin/default
- $view->setHeaders($array);
กำหนด header ของ PHP - $view->output($content);
คำสั่งสำหรับส่งออก header ที่เพิ่มไว้ และ เนื้อหาที่ $content
สำหรับการใช้งาน View อันดับแรก เราต้องกำหนด Skin ที่จะเลือกใช้ให้กับ Template ก่อน จากนั้นจึงสร้าง View แล้วถึงจะใส่เนือหาลงใน View แล้วส่งออกเป็น HTML ในลำดับสุดท้าย
// กำหนด skin ให้กับ template
\Somtum\Template::init('skin/'.self::$cfg->skin);
// View
$view = new \Somtum\View();
// เนื้อหา
$view->setContents(array(
'/{TITLE}/' => 'ทดสอบ',
'/{CONTENT}/' => 'Hello World!',
));
// ส่งออก เป็น HTML
echo $view->renderHTML();
ตัวอย่างการใช้งาน View เบื้องต้นอยู่ใน projects/view/