2012-09-19 41 views
0

我想創建一個屬於我自己的幫手。 Safecheck文件夾位於library文件夾中,幷包含一個Helper文件夾。該課程名爲Safecheck_Helper_Authority.php(在library/Safecheck/Helper之內)。Zend:沒有找到行動幫手

Bootstrap.php

protected function _initHelper() 
{ 
    Zend_Controller_Action_HelperBroker::addPrefix('Safecheck_Helper'); 
} 

Safecheck_Helper_Authority.php

class Safecheck_Helper_Authority extends Zend_Controller_Action_Helper_Abstract 
{ 
    public function hasAuthority($userId, array $ids) 
    { 

    } 
} 

我想這個用戶類中的功能。但我得到的錯誤「消息:動作助手的名字管理局未發現」,通過下面的代碼觸發:

$this->_helper->authority('hasAuthority'); 

也許我不會用正確的代碼中調用呢?我錯過了什麼嗎?

回答

0

有在你的application.ini類似

resources.frontController.actionhelperpaths.Application_Action_Helper = APPLICATION_PATH "/../classes/Application/Action/Helper" 

東西的路徑應當改變,以反映你的文件的路徑。

1

爲了以這種方式調用動作助手$this->_helper->authority('hasAuthority');您需要在助手中定義direct()方法。

class Safecheck_Helper_Authority extends Zend_Controller_Action_Helper_Abstract 
{ 
    public function direct($userId, array $ids) 
    { 
     // do helper stuff here 
    } 
} 

一個簡單的方法來註冊的助手路徑和前綴是使用的application.ini:

resources.frontController.actionhelperpaths.Safecheck_Helper = APPLICATION_PATH "/../library/Safecheck/Helper" 

做自舉(不知道addPrefix()方法的工作原理與庫命名空間):

protected function _initHelper() 
{ 
    //addPath(path_to_helper, helper_prefix) 
    Zend_Controller_Action_HelperBroker::addPath('/../library/Safecheck/Helper', 'Safecheck_Helper'); 
} 

一個動作助手的一個簡單的例子:

class Controller_Action_Helper_Login extends Zend_Controller_Action_Helper_Abstract 
{ 
    //prepares a login form for display 
    public function direct() 
    { 
     $form = new Application_Form_Login(); 
     $form->setAction('/index/login'); 

     return $form; 
    } 
}