如何在Zend Framework中最好地添加此Action Helper路径

时间:2011-04-03 08:04:09

标签: php zend-framework

我已经将自定义ACL类编写为Action Helper。类名是Controller_Helper_Acl,位于文件applications / controllers / helpers / acl.php中。我的问题是我的应用程序难以找到文件。

我想使用Action Helper Event Hooks,所以我需要尽早实例化该类。在我的bootstrap.php中,我尝试了Helper Broker的addPath()方法,但是当我使用new关键字时,这不起作用。 (据推测它只是告诉代理在按需调用类时在哪里找到文件)。

如果我在引导程序中放入require_once,然后使用new关键字来实例化Controllers_Helpers_Acl,它运行正常,但我认为这不是一个可行的解决方案(因为我在目录中会有很多Action Helpers)。 / p>

我尝试使用$ loader-> registerNamespace('Controllers_Helpers_')添加自动加载器的路径,并复制类名,但仍未找到文件。 (也许我的语法错误了?)

其他人如何解决这个问题?我怀疑这是我对Autoloader缺乏经验的真正问题。

3 个答案:

答案 0 :(得分:4)

您还可以在 application.ini 中指定Action Helper路径:

resources.frontController.actionHelperPaths.My_Controller_Action_Helper = "My/Controller/Action/Helper"

答案 1 :(得分:3)

您可以在Bootstrap.php中指定此路径,如下所示:

  protected function _initAutoload() {
        $autoLoader = Zend_Loader_Autoloader::getInstance();

        $resourceLoader = new Zend_Loader_Autoloader_Resource(array(
                    'basePath' => APPLICATION_PATH,
                    'namespace' => ''
        );

        $resourceLoader->addResourceType('controller', 'controllers/helpers/', 'Controller_Helper_');

        $autoLoader->pushAutoloader($resourceLoader);
  }

希望这有帮助。

答案 2 :(得分:2)

该文件应位于library / custmname / controller / helper / acl.php,类名应为Customname_Controller_Helper_Acl,要获取对它的访问权限,您需要在bootstrap中注册命名空间Customname,通过application.ini或在索引中硬编码.php或Bootstrap.php,我建议使用application.ini tough(添加这一行autoloaderNamespaces[] = "Customname_"。有很多关于如何实现这一点的例子......

相关问题