สิ่งที่เราต้องทำก็คือ
- กำหนด Behaviors (หรือก็คือการดัก Event นั้นเอง) ในไฟล์ Config main
- สร้าง Component ใหม่โดย Extends มาจาก CBehavior
เริ่มที่ไฟล์ Config ก่อนเลยครับซึ่งจะอยู่ใน Yii Application ของเราใน folder protected\config\ ชื่อไฟล์ main.php
ทำการเปิดไฟล์ขึ้นมาด้วย Text Editor ของท่านจากนั้นแทรก Code ดังนี้
'behaviors' => array('onBeginRequest' => array('class' => 'application.components.RequireLogin')),
- behaviors เป็นการกำหนดการทำงานเมื่อเกิด Event ขึ้น
- onBeginRequest เป็นการกำหนดการทำงานเมื่อฝั่ง Client มีการ request page มาที่ server หรือ ผู้ใช้มีการเปิดหน้าเว็บไซด์นั้นเอง
- class เป็นการกำหนดให้ไปเปิดใช้งาน Class ไหนที่ต้องทำงานเมื่อเกิด Event ขึ้น
- application.components.RequireLogin คือชื่อ Class ที่ถูกใช้งาน
โดยการแทรก Code นั้นต้องแทรกให้อยู่ในระดับนอกสุด ระดับเดียวกันกับ modules หรือ components
ต่อไปคือการสร้าง Component ใหม่ ให้ทำการเข้าไปที่ Yii Application ของเราแล้วไปที่ folder protected\components\ จากนั้นให้ทำการสร้างไฟล์ขึ้นมาชื่อ RequireLogin.php ครับ
ภายในไฟล์ RequireLogin.php แทรก Code ไว้ตามนี้ครับ
<?php
class RequireLogin extends CBehavior
{
public function attach($owner)
{
$owner->attachEventHandler('onBeginRequest', array($this, handleBeginRequest'));
}
public function handleBeginRequest($event)
{
if (Yii::app()->user->isGuest && !in_array($_GET['r'],array('site/login'))) {
Yii::app()->user->loginRequired();
}
}
}
?>
- function attach ใช้ผูกโยง Event กับ Function
- function handleBeginRequest ใช้ทำงานเมื่อมี Event เกิดขึ้น
$owner->attachEventHandler('onBeginRequest', array($this, handleBeginRequest'));
- attachEventHandler คือการกำหนด Function ที่จะทำงานเมื่อเกิด Event ขึ้น
- onBeginRequest คือชื่อของ Event ที่เราจะกำหนดการทำงานให้ (จะเป็นชื่อเดียวกับที่อยู่ในไฟล์ Config)
- $this ในที่นี้หมายถึง Class นี้ (คือ Class RequireLogin)
- handleBeginRequest คือชื่อ Function ที่เราจะให้มันทำงาน
if (Yii::app()->user->isGuest && !in_array($_GET['r'],array('site/login'))) {Yii::app()->user->loginRequired();
}
บรรทัดนี้เป็นการตรวจสอบว่าทำการเข้าสู่ระบบหรือยังและได้อยู่ในเพจที่ยกเว้นหรือไม่
- Yii::app()->user->isGuest เป็นการตรวจสอบว่าเข้าสู่ระบบหรือยัง โดยถ้ายังจะคืนค่ากลับมาเป็น true
- in_array เป็น Function ในการตรวจสอบข้อมูลใน array ว่ามีค่าที่เหมือนกับค่าของตัวแปรอยู่หรือไม่ โดยถ้ามีจะคืนค่าเป็น true
- Yii::app()->user->loginRequired() เป็นคำสั่งให้เปลี่ยนเพจไปยังเพจที่ใช้ Login

ไม่มีความคิดเห็น:
แสดงความคิดเห็น