Будьте осторожны с решением Прадипа Шармы (ответ, который он написал сам и принял ниже).
Весь код ниже приведен для ZF 1.12, а не ZF 2.0
В начальной загрузке экземпляр MVC Zend_Layout, возможно, еще не был создан. Вы должны использовать Zend_Layout::startMvc()
вместо:
$view = Zend_Layout::startMvc()->getView() ;
И я предпочитаю выполнять этот код в функции preDispatch (). Новые пользователи ZF могут быть заинтересованы в этом:
application / plugins / 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() ;
}
}
Вызов нового Application_Form_HeaderForm()
по умолчанию автоматически загрузится в папку application / forms / . Вы также можете создать форму непосредственно в плагине с помощью new Zend_Form()
, addElement()
и т. Д., Но она не будет использоваться повторно.
Конечно, вам нужно зарегистрировать этот плагин в вашем загрузчике!
application / Bootstrap.php:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initPlugin()
{
$front = Zend_Controller_Front::getInstance() ;
$front->registerPlugin(new Application_Plugin_HeaderForm()) ;
}
}
Вызов нового Application_Plugin_HeaderForm()
по умолчанию автоматически загрузится в папку application / plugins /