[ตอนที่ 3] เวิร์คช้อป CMS อย่างง่าย เก็บข้อมูลเป็นไฟล์

[ตอนที่ 3] เวิร์คช้อป CMS อย่างง่าย เก็บข้อมูลเป็นไฟล์
ในบทนี้ เราจะมาเริ่มสร้างส่วนของแอดมินกัน โดยที่ผมจะสรุปโครงสร้างคร่าวๆของส่วนแอดมินไว้ดังนี้
  1. ส่วนแอดมินจะต้องแยกออกจากหน้าเว็บหลักโดยจะถูกติดตั้งไว้ที่ไดเร็คทอรี่ admin/
  2. การเข้าระบบแอดมินต้องมีการรักษาความปลอดภัย โดยผมจะใช้วิธีการตรวจสอบการ Login มาตรฐานของคชสาร ซึ่งจะเป็นการตรวจสอบสิทธิการ Login กับไฟล์ตั้งค่าระบบ
  3. ระบบแอดมิน ต้อง เขียน - แก้ไข - ลบ หน้าเพจ และ เมนูได้

ทำความเข้าใจเพิ่มเติมเกี่ยวกับโครงสร้างโปรเจ็คของคชสาร
คชสารถูกออกแบบมาเพื่อให้รองรับการทำงานแบบหลายโปรเจ็คในชุดเดียวกันได้ โดยไม่จำเป็นต้องติดตั้งโค้ดของคชสารเพิ่มเติม เพียงแค่ตั้งค่าให้ถูกต้องเท่านั้น ซึ่งโปรเจ็คแต่ละตัวจะเกี่ยวข้องกันหรือไม่ก็ได้ ยกตัวอย่างเช่น โปรเจ็คตัวอย่างของคชสาร (ติดตั้งอยู่ที่โฟลเดอร์ projects/) ซึ่งโปรเจ็คแต่ละตัวไม่มีความเกี่ยวข้องกันเลย ในขณะที่การออกแบบระบบแอดมิน (เช่นตัวอย่างนี้) ส่วน admin จะต้องมีความเกี่ยวข้องกับโปรเจ็คหลัก อย่างน้อยก็จะต้องมีการใช้การตั้งค่า ตลอดจนใช้ทรัพยากรบางอย่างร่วมกัน

ขั้นตอนการสร้างระบบแอดมิน
  1. สร้างไดเร็คทอรี่ admin/ สำหรับส่วนของแอดมิน เพื่อเวลาเรียกใช้งานจะได้เป็น http://domain.tld/admin/ ตามธรรมเนียมนิยม
  2. สร้างไดเร็คทอรี่สำหรับติดตั้งโมดูล admin/modules/, admin/modules/index/, admin/modules/index/controllers, admin/modules/index/models และ admin/modules/index/views ตามโครงสร้างปกติของโปรเจ็ค ซึ่งไดเร็คทอรี่เหล่านี้เราจะเอาไว้ใช้เขียนโค้ดของส่วนแอดมินนั่นเอง
  3. สร้างไดเร็คทอรี่ admin/skin/ ไว้เก็บ template ของส่วนแอดมิน และสร้างไดเร็คทอรี่ admin/ ไว้ในนั้น ซึ่ง admin นี่คือชื่อ template ที่จะใช้ในส่วนของแอดมินนั่นเอง
  4. สร้างไดเร็คทอรี่ admin/js/ ไว้สำหรับเก็บไฟล์ Javascript ที่ใช้เฉพาะกับแอดมินเท่านั้น
  5. สุดท้าย สร้างไฟล์ admin/index.php เพื่อเป็นหน้าหลักของส่วนแอดมิน
ก่อนอื่นจะต้องไปแก้ไขไฟล์ index.php ของเว็บหลักก่อนเพื่อให้รองรับกับการใช้งานระบบแอดมิน โดยเราจะแยกการโหลดคชสารออกจากไฟล์ index.php เพื่อให้เราสามารถใช้คำสั่งในการโหลดคชสารไฟล์เดียวกันได้ทั้งส่วนของแอดมินและหน้าเว็บ จะได้ไม่ต้องตั้งค่าแยกกัน
// load Kotchasan
include 'load.php';
// Initial Kotchasan Framework
Kotchasan::createWebApplication()->run();

ไฟล์ index.php จะเขียนโค้ดแบบนี้ โดยจะย้ายการโหลดคชสารไปที่ load.php
/*
 * Site root
 */

define('ROOT_PATH', str_replace('\\', '/', dirname(__FILE__)).'/');
/*
 * 0 (default) บันทึกเฉพาะข้อผิดพลาดร้ายแรงลง error_log .php
 * 1 บันทึกข้อผิดพลาดและคำเตือนลง error_log .php
 * 2 แสดงผลข้อผิดพลาดและคำเตือนออกทางหน้าจอ (ใช้เฉพาะตอนออกแบบเท่านั้น)
 */

define('DEBUG', 2);
// load Kotchasan
include 'vendor/goragod/kotchasan/Kotchasan/load.php';

ไฟล์ load.php จะมีการตั้งค่าตัวแปรของคชสารเพิ่มเติม รวมทั้งจะมีการโหลดคชสารในบรรทัดสุดท้ายด้วย อธิบายตัวแปรที่เพิ่มขึ้นมาดังนี้ครับ
  • ROOT_PATH เป็นการกำหนดไดเร็คทอรี่รากของแอพพลิเคชั่น ซึ่งปกติแล้วคชสารจะดูจากไฟล์ index.php ไฟล์นี้อยู่ที่ไหน ไดเร็คทอรี่รากของ Application จะอยู่ที่นั่น เช่น ติดตั้งโค้ดไว้ที่ /public_html/ (root ของ Server) ROOT_PATH ก็จะเก็บค่าพาธแบบเต็มชี้ไปยังไดเร็คทอรี่ /public_html/ เช่น /var/www/public_html/ เป็นต้น (ดูข้อมูลเพิ่มเติมที่ ค่าคงที่ต่างๆ ของคชสาร)
  • DEBUG เปิดใช้งานการแสดงข้อผิดพลาด (ขณะออกแบบ)
  • และสุดท้าย ทำการโหลดคชสารตามปกติ

ส่วนไฟล์ index.php ของส่วน admin (admin/index.php) ให้ใส่โค้ดตามนี้
// load Kotchasan
include '../load.php';
// Initial Kotchasan Framework
Kotchasan::createWebApplication()->run();

จะเห็นว่าทั้งส่วนของแอดมินและเว็บหลักจะโหลดคชสารที่ไฟล์เดียวกัน (load.php) และมี ROOT_PATH เดียวกัน ซึ่งจะทำให้ส่วนแอดมินโหลดค่าติดตั้งทั้งหมดจากไดเร็คทอรี่หลักก่อนถึงจะไปโหลดจากไดเร็คทอรี่ admin/
0SHAREFacebookLINE it!