【问题标题】:How best to add this Action Helper path in Zend Framework如何最好地在 Zend Framework 中添加此 Action Helper 路径
【发布时间】:2011-04-03 08:04:09
【问题描述】:

我编写了一个自定义 ACL 类作为操作助手。类名为 Controller_Helper_Acl,位于文件 applications/controllers/helpers/acl.php 中。我的问题是我的应用程序很难找到文件。

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

如果我在 bootstrap 中放了一个 require_once,然后使用 new 关键字来实例化 Controllers_Helpers_Acl,它可以正常工作,但我认为这不是一个可行的解决方案(因为我的目录中会有很多 Action Helpers)。

我尝试使用 $loader->registerNamespace('Controllers_Helpers_') 添加 Autoloader 的路径,并将类名复数,但仍然找不到文件。 (也许我的语法错误?)

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

【问题讨论】:

    标签: php zend-framework


    【解决方案1】:

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

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

    【讨论】:

    • 我想从路径 Application_Controller_Helper 添加动作助手,但它正在生成插件名称未找到的异常...我正在使用resources.frontController.actionhelperpaths.Application_Controller_Helper = APPLICATION_PATH "/controllers/helpers"
    【解决方案2】:

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

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      该文件应位于 library/custmname/controller/helper/acl.php,类名应为 Customname_Controller_Helper_Acl,要访问它,您需要通过 application.ini 在引导程序中注册命名空间 Customname 或在索引中硬编码.php 或 Bootstrap.php,我会推荐使用 application.ini 强硬(添加此行 autoloaderNamespaces[] = "Customname_"。有大量示例说明如何实现这一点...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多