2010-11-15 68 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