繁体   English   中英

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

[英]How best to add this Action Helper path in 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)。

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

别人怎么解决这个问题? 我怀疑这是我对Autoloader缺乏经验的真正问题。

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

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

您可以在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);
  }

希望这可以帮助。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM