वीर

5 มีนาคม 2008

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 ความคิดเห็น »

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

    Comment โดย BLeAm — 10 มีนาคม 2008 @ 23:02

  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.

    Comment โดย वीर — 11 มีนาคม 2008 @ 04:47


RSS feed สำหรับความคิดเห็นในกระทู้นี้ TrackBack URI

เขียนความคิดเห็นของคุณ

บลอกที่ WordPress.com .