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/

^