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

时间:2015-03-09 22:26:57

标签: php zend-framework view-helpers

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

  • OutputComplexForm.php
  • OutputDistributorsList.php

我把它们放在/ application / views / helpers

班级名称是

  • Zend_View_Helper_OutputComplexForm
  • Zend_View_Helper_OutputDistributorsList

据我所知,如果您有Zend_View_Helper前缀,则无需向application.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包含所描述的错误消息。我仍然没有看到启动会话和初始化视图助手之间的联系。

1 个答案:

答案 0 :(得分:0)

对于您编写的特定于应用程序的类 - ./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
    }
}

请注意,类名是upper-camel-case MyHelper,方法是lower-camelcase myHelper()

在您的视图中,您可以使用以下命令调用view-helper:

<?php

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

对于命名空间,类名,文件位置/名称和调用语法的这些约定,View的插件加载器应该能够查找,加载和执行view-helper方法。