CakePHP, วิธีดู action path จากใน controller
ACL ของ CakePHP สามารถตรวจสอบได้ว่า ARO (~ user หรือ role ของ user) สามารถเข้าไปใช้ ACO (หน้าเว็บ, action ต่างๆ เช่น books/index, books/delete) ได้หรือไม่. อย่างไรก็ตาม ACL ก็ไม่ได้หามาให้เราเองว่าเรากำลังจะตรวจสอบ user ชื่ออะไร หรือว่า actionอะไร. คำสั่งที่เราใช้ ACL จริงๆคือ
$this->Acl->check($user, $page, 'read');
จาก code ข้างบนก็พอบอกได้ว่า $user กับ $page นี่เราต้องหามาเอง. $user ควรจะได้มาจาก Authentication module ที่ผมจะเขียนถึงในต้องต่อไป แต่ว่า $page จากที่อ่าน http://bakery.cakephp.org/articles/view/real-world-access-control สามารถเอามาได้ตาม code ข้างล่าง
$this->set('action', $this->name.DS.$this->action);
เพื่อให้เห็นภาพมากขึ้นลองดูทั้ง controller น่าจะดีกว่า
set('action', $this->name.DS.$this->action);
}
}
?>
แล้วก็ view ด้วย
This action:
ผลออกมาก็จะได้แบบนี้
การเขียนที่ดีควรจะทีสรุปหน่อยใช่มั้ย ถึงแม้ผมจะเอียนกับงานเขียนบางอย่างจนจะอ้วก แต่ผมก็จะสรุปว่า คำสั่ง $this->name.DS.$this->action เอาไว้ใช้หาได้ว่า controller ใดๆ ที่จริงแล้วคือ page ไหน (โดยตัด URL ออก) หรือจะคิดว่าเป็น action path ก็น่าจะได้ เช่น books/index เป็นต้น พอได้ข้อมูลนี้มาแล้วเราก็เอาไว้ใช้ check ใน ACL ได้.
