0

我正在尝试创建自己的助手。该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)
    {

    }
}  

我想使用这个类中的函数。但我收到由以下代码触发的错误“消息:未找到名称授权的操作助手”:

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

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

4

2 回答 2

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;
    }
}
于 2012-09-19T13:52:28.300 回答
0

在你的 application.ini 中有类似的东西

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

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

于 2012-09-19T13:50:38.537 回答