[ตอนที่ 4] เวิร์คช้อป CMS อย่างง่าย เก็บข้อมูลเป็นไฟล์
ถึงตอนนี้ส่วนแอดมินก็พร้อมจะทำงานแล้ว ไฟล์แรกที่คชสารจะเรียกใช้ก็คือ defaultController เหมือนเดิม (Index\Index\Controller) แต่เนื่องจากแอพพลิเคชั่นนี้อยู่ภายใต้ไดเร็คทอรี่ admin/ มันจึงเรียกไปยัง admin/modules/index/controllers/index.php แทน ซึ่งจะเป็นคนละไฟล์กันกับไดเร็คทอรี่หลักนะครับ
ผมจะแบ่งอธิบายเป็นส่วนๆนะครับ
แอพพลิเคชั่นนี้มีการตรวจสอบการ Login ด้วย ดังนั้นสิ่งแรกที่ต้องทำคือต้องมีการเรียกใช้งาน session ก่อน ด้วย $request->initSession(); หลังจากนั้นถึงจะทำการตรวจสอบการ Login ด้วยคำสั่ง Login::create();
คำสั่ง Login::create(); จะทำการตรวจสอบข้อมูลการ Login กับข้อมูลจากไฟล์ settings/config.php
ถ้าถูกต้องจะมีการสร้าง session ขึ้นมาเก็บข้อมูลการเข้าระบบคือ $_SESSION['login']
โค้ดลำดับถัดมา จะเป็นการกำหนดค่า Template ซึ่งจากโค้ดจะเห็นว่ามีการกำหนดค่าให้ใช้ Template ชื่อ admin
โค้ดด้านบน จะทำการตรวจสอบว่าสามารถ Login ได้สำเร็จหรือไม่ ถ้าสำเร็จจะไปเรียกคอนโทรลเลอร์หลักอีกตัวคือ Index\Main\Controller มาทำงาน แต่ถ้ายังไมได้ Login จะไปเรียก Index\Login\Controller มาทำงานแทน
สำหรับโค้ดส่วนที่เหลือ จะเป็นการนำข้อมูลที่ได้ไปแสดงผลด้วย View ตามปกติ
namespace Index\Index;
use \Kotchasan\Http\Request;
use \Kotchasan\Login;
use \Kotchasan\Template;
class Controller extends \Kotchasan\Controller
{
public function index(Request $request)
{
// เริ่มต้นใช้งาน session
$request->initSession();
// ตรวจสอบการ login
Login::create();
// กำหนด skin ให้กับ template
Template::init('admin');
// backend
$view = new \Kotchasan\View;
if ($login = Login::isMember()) {
// Controller หลัก
$main = \Index\Main\Controller::init($request);
// class สำหรับ body (index.html)
$bodyclass = 'mainpage';
} else {
// Controller หน้า login
$main = \Index\Login\Controller::init($request);
// class สำหรับ body (index.html)
$bodyclass = 'loginpage';
}
// เนื้อหา
$view->setContents(array(
// main template
'/{MAIN}/' => $main->detail,
// title
'/{TITLE}/' => $main->title,
// class สำหรับ body (index.html)
'/{BODYCLASS}/' => $bodyclass
));
if ($login) {
$view->setContents(array(
// แสดงชื่อคน Login
'/{LOGINNAME}/' => $login['username'],
// แสดงเมนู
'/{TOPMENU}/' => \Kotchasan\Menu::render(\Index\Menu\Model::get(), $main->module)
));
}
// ส่งออก เป็น HTML
echo $view->renderHTML();
}
}
ผมจะแบ่งอธิบายเป็นส่วนๆนะครับ
// เริ่มต้นใช้งาน session
$request->initSession();
// ตรวจสอบการ login
Login::create();
แอพพลิเคชั่นนี้มีการตรวจสอบการ Login ด้วย ดังนั้นสิ่งแรกที่ต้องทำคือต้องมีการเรียกใช้งาน session ก่อน ด้วย $request->initSession(); หลังจากนั้นถึงจะทำการตรวจสอบการ Login ด้วยคำสั่ง Login::create();
คำสั่ง Login::create(); จะทำการตรวจสอบข้อมูลการ Login กับข้อมูลจากไฟล์ settings/config.php
/* config.php */
return array(
'username' => 'admin',
'password' => 'admin'
);
ถ้าถูกต้องจะมีการสร้าง session ขึ้นมาเก็บข้อมูลการเข้าระบบคือ $_SESSION['login']
// กำหนด skin ให้กับ template
Template::init('admin');
โค้ดลำดับถัดมา จะเป็นการกำหนดค่า Template ซึ่งจากโค้ดจะเห็นว่ามีการกำหนดค่าให้ใช้ Template ชื่อ admin
if ($login = Login::isMember()) {
// Controller หลัก
$main = \Index\Main\Controller::init($request);
// class สำหรับ body (index.html)
$bodyclass = 'mainpage';
} else {
// Controller หน้า login
$main = \Index\Login\Controller::init($request);
// class สำหรับ body (index.html)
$bodyclass = 'loginpage';
}
โค้ดด้านบน จะทำการตรวจสอบว่าสามารถ Login ได้สำเร็จหรือไม่ ถ้าสำเร็จจะไปเรียกคอนโทรลเลอร์หลักอีกตัวคือ Index\Main\Controller มาทำงาน แต่ถ้ายังไมได้ Login จะไปเรียก Index\Login\Controller มาทำงานแทน
สำหรับโค้ดส่วนที่เหลือ จะเป็นการนำข้อมูลที่ได้ไปแสดงผลด้วย View ตามปกติ