กรอบ Zend : ไม่มีการดำเนินการอื่นใดนอกจากการดำเนินการของดัชนีในคอนโทรลเลอร์ที่สามารถเรียกได้

ฉันมีไฟล์คอนโทรลเลอร์ที่มีสองการกระทำคือ:

class IndexController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        // action body
    }

    public function doLoginAction()
    {
        // action body
    }
}

และไฟล์มุมมองที่เกี่ยวข้อง เช่น เมื่อฉันกด http://www.mydomain.com/index มันจะโหลดมุมมองดัชนี ปัญหาที่ฉันกำลังเผชิญคือเมื่อฉันพยายามเข้าถึงการกระทำดัชนีของคอนโทรลเลอร์นี้ มันจะโหลดมุมมองที่เกี่ยวข้อง แต่เมื่อฉันพยายามเข้าถึงการกระทำของโดโลจิน มันทำให้เกิดข้อผิดพลาด

http://www.mydomain.com/index/dologin

*ข้อความ: ไม่มีการดำเนินการ "dologin" และไม่ติดอยู่ใน __call()*

ขอพารามิเตอร์:

array (
  'controller' => 'index',
  'action' => 'dologin',
  'module' => 'default',
)  

สิ่งเดียวกันนี้เกิดขึ้นเมื่อฉันลองใช้คอนโทรลเลอร์และแอคชั่นอื่น การดำเนินการของดัชนีจะทำงานได้ดีสำหรับคอนโทรลเลอร์นั้นเช่นกัน แต่ไม่มีการดำเนินการอื่นใดในคอนโทรลเลอร์

ป.ล. : ฉันได้กำหนดค่าโมดูล mod_rewrite และ AllowOverride ALL ในไฟล์กำหนดค่า apache แล้ว


person Faizan Ali    schedule 02.05.2012    source แหล่งที่มา
comment
ฉันคิดว่ามันเป็นเรื่องที่เกี่ยวข้องกับโดโลจิน อาจเป็นคำสำคัญที่สงวนไว้ เพราะเมื่อฉันสร้างฟังก์ชันใหม่ด้วยชื่ออื่น มันก็ทำงานได้ดี   -  person Faizan Ali    schedule 02.05.2012


คำตอบ (2)


ชื่อการกระทำที่ใส่อูฐนั้นคาดว่าจะใช้เส้นประเหมือนพารามิเตอร์ ดังนั้น doLoginAction() จะตอบสนองต่อ /default/index/do-login ไม่ใช่ dologin หากคุณต้องการให้ URL เป็น dologin คุณควรเปลี่ยนชื่อการกระทำเป็น dologinAction()

person shrikeh    schedule 02.05.2012

คุณสามารถมี URL ที่คั่นด้วยยัติภังค์ (-) ในระดับตัวควบคุมได้เช่นกัน

สมมติว่าคุณต้องการ URL เช่นนี้:

http://www.mydomain.com/do-some-stuff/my-stuff/

จากนั้นคอนโทรลเลอร์ของคุณควรตั้งชื่อเป็น:

DoSomeStuffController (as class name) && DoSomeStuffController.php (as controller file name)

และ

myStuffAction() (as your method name)
person vsingh    schedule 14.05.2014