请注意 Pradeep Sharma 的解决方案(他自己写的并在下面接受的答案)。
下面的所有代码都适用于 ZF 1.12,而不是 ZF 2.0
在引导程序中,可能还没有创建 Zend_Layout 的 MVC 实例。您应该Zend_Layout::startMvc()
改用:
$view = Zend_Layout::startMvc()->getView() ;
而且我更喜欢在 preDispatch() 函数中执行此代码。ZF 的新用户可能对此感兴趣:
应用程序/插件/HeaderForm.php:
class Application_Plugin_HeaderForm extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$view = Zend_Layout::startMvc()->getView() ;
$view->headerForm = new Application_Form_HeaderForm() ;
}
}
默认情况下,调用 newApplication_Form_HeaderForm()
将自动加载到application/forms/文件夹中。new Zend_Form()
您也可以使用,等将表单直接创建到插件中,addElement()
但它不能重复使用。
当然,您需要在引导程序中注册此插件!
应用程序/Bootstrap.php:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initPlugin()
{
$front = Zend_Controller_Front::getInstance() ;
$front->registerPlugin(new Application_Plugin_HeaderForm()) ;
}
}
默认情况下,调用 newApplication_Plugin_HeaderForm()
将自动加载到application/plugins/文件夹中