Zend:找不到动作助手

时间:2012-09-19 12:57:59

标签: zend-framework

我正在尝试创建自己的帮助器。 Safecheck文件夹位于library文件夹中,并包含Helper文件夹。该类称为Safecheck_Helper_Authority.php(在library/Safecheck/Helper内)。

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)
    {

    }
}  

我想要使用此类中的函数。但是我收到错误“Message:Action Helper by name authority not found”,由以下代码触发:

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

也许我没有使用正确的代码调用它?我错过了什么吗?

2 个答案:

答案 0 :(得分: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"

在bootstrap中执行此操作(不确定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;
    }
}

答案 1 :(得分:0)

在你的application.ini中有类似于

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

应更改路径以反映您的文件路径。