2010-11-15 105 views

回答

1

针对菲尔·布朗的评论:

class My_View_Helper_AddMyForm extend Zend_View_Helper_Abstract() 
{ 
    public function addMyForm() { 
     return new My_Form_MyForm(); 
    } 

} 

现在,在您的布局:

echo $this->addMyForm(); 

我没有测试它,但它应该工作假设你已经注册的我/查看/助手帮手路径。代码较少,只有在需要时才可以调用。

+0

我已经意识到你为什么要使用控制器动作助手或视图助手。如果您希望能够在任何*页上提交和处理表单,请使用控制器操作助手。如果表单提交给特定操作,请使用视图帮助器。 – Phil 2010-11-16 01:48:11

1

您可以使用操作助手将表单添加到布局。
所以,你的动作助手应该是这样的:

class Application_Controller_Helper_AddMyForm extends Zend_Controller_Action_Helper_Abstract 
{ 
    public function preDispatch() 
    { 
     $view = $this->getActionController()->view; 
     $form = new Application_Form_MyForm();   
     $view->myForm = $form; 
    } 
} 

而这个帮手,应在引导注册:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 
    protected function _initMyActionHelpers() 
    { 
     $this->bootstrap('frontController'); 
     $addMyForm = Zend_Controller_Action_HelperBroker::getStaticHelper('AddMyForm'); 
     Zend_Controller_Action_HelperBroker::addHelper($addMyForm); 
    } 
} 

现在你应该能够从布局访问myForm

echo $this->myForm; 

请参阅Weier O'Phinney's blog和中有关使用动作助手实施可重复使用小部件的更多信息

+1

我会更倾向于使用视图助手而不是动作助手,但这个过程会非常相似。 – Phil 2010-11-15 22:40:36

+0

你会在哪里放置一个动作助手?与视图助手相同的文件夹? – 2012-10-25 03:20:44