我正在重组我的 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 的插件加载器应该能够查找、加载和执行您的视图帮助程序方法。