ZF 1.12 自定义视图帮助程序 - 打开失败


ZF 1.12 custom view helper - failed opening

我正在重组我的 Zend 1.12 项目。我有几个视图助手:

  • 输出复杂形式.php
  • 输出分销商列表.php

我把它们放在/应用程序/视图/助手中

类名是

  • Zend_View_Helper_OutputComplexForm
  • Zend_View_Helper_OutputDistributorsList

据我了解,如果您有Zend_View_Helper前缀,则无需向应用程序添加任何配置.ini

现在,当我尝试加载任何页面(即使是那些不使用帮助程序的页面)时,我收到错误:

Message: Zend_Session::start() - /otms/vendor/zendframework/zendframework1/library/Zend/Loader.php(Line:134): Error #2 include_once(): Failed opening    'Zend/View/Helper/OutputComplexForm.php' for inclusion (include_path='/otms/application/../library:/otms/application/../library/phpseclib0.3.1:/otms/application/../library/Amazon:/otms/application/../library/USPS:/otms/application/../library/Composer:/otms/library:/otms/vendor/phpseclib/phpseclib/phpseclib:/otms/vendor/zendframework/zendframework1/library:.:/usr/share/php:/usr/share/pear') 

我错过了什么吗?

UPD

我发现调用函数后发生错误

$startedCleanly = session_start(); //line 482

在文件/Zend/Session.php 中。在此调用属性 Zend_Session_Exception::$sessionStartError 之后包含描述的错误消息。我仍然没有看到启动会话和初始化视图助手之间的连接。

对于您编写的应用程序特定类(出现在./application/*中的内容)通常不应位于伪命名空间Zend_中。相反,它们应该在 appnamespace ,如 ./application/config/application.ini 中配置的那样。

默认命名空间为"Application_",因此名为 MyHelper 的视图帮助程序通常存储在文件中./application/views/helpers/MyHelper.php

class Application_View_Helper_MyHelper extends Zend_View_Helper_Abstract
{
    public function myHelper()
    {
        // do your stuff here
    }
}

请注意,类名是大写驼峰大小写MyHelper方法myHelper()小驼峰大小写。

在您的视图中,您可以使用以下命令调用视图帮助程序:

<?php
$output = $this->myHelper();
// Do something with $output

有了命名空间、类名和文件位置/名称以及调用语法的这些约定,View 的插件加载器应该能够查找、加载和执行您的视图帮助程序方法。