我正在尝试创建自己的帮助器。 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');
也许我没有使用正确的代码调用它?我错过了什么吗?
答案 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"
应更改路径以反映您的文件路径。