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: 

ผลออกมาก็จะได้แบบนี้

cake_action.png

การเขียนที่ดีควรจะทีสรุปหน่อยใช่มั้ย ถึงแม้ผมจะเอียนกับงานเขียนบางอย่างจนจะอ้วก แต่ผมก็จะสรุปว่า  คำสั่ง $this->name.DS.$this->action เอาไว้ใช้หาได้ว่า controller ใดๆ ที่จริงแล้วคือ  page ไหน (โดยตัด URL ออก) หรือจะคิดว่าเป็น action path ก็น่าจะได้ เช่น books/index เป็นต้น  พอได้ข้อมูลนี้มาแล้วเราก็เอาไว้ใช้ check ใน ACL ได้.

2 thoughts on “CakePHP, วิธีดู action path จากใน controller

  1. ถามจริงๆ ทีนึงสิ
    CakePHP นี่มันใช้งานได้ดี+สะดวก เท่าพวก MVC ของ Python/Ruby จริงๆ เหรอ?
    ถ้าไม่นับว่าแก้ปัญหาเรื่องหา Host อะไรคือข้อดีหรือจุดเด่น?

  2. ผมตอบได้แต่ความรู้สึกนะครับ ไม่ได้มีการทดลองเปรียบเทีนบที่ดีอะไร. ผมว่า CakePHP ง่ายกว่า Turbogears (ส่วน django นี่แค่เล่นครั้งแรกผมก็ถอดใจแล้ว) และ Rails นะครับ. ออกแบบมาได้น่าใช้พอดิบพอดี. *แต่ก่อน* รู้สึกว่าใช้พวก authentication + access control และ L10N ยากกว่า Turbogears แต่ว่าพอ CakePHP ออก 1.2 มาแล้ว ก็แอบรู้สึกว่าชอบ ACL + Auth ของ CakePHP มากกว่า Turbogears อีก.

    สรุปว่าผมคิดว่า CakePHP ใช้ง่าย เรียนไว เข้าใจระบบง่าย แก้ไขปรับปรุป ปรับแต่งได้ง่าย *กว่า* framework ที่เคยลองมา ไม่ว่าจะเป็น framework ที่ใช้ Ruby หรือ Python ก็ตาม. อย่างไรก็ตาม CakePHP ก็น่าจะมีข้อด้อยบ้างเรื่องประสิทธิภาพในการทำงาน และภาษา PHP เอง. เวลาใช้ PHP ปกติมันก็มี function ครบตามที่อยากใช้ดี แต่พิมพ์ยาวสักหน่อย ถ้าเทียบกับ Ruby และ Python.

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s