2012-09-19 24 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; 
    } 
}