2009-10-05 67 views
1

如何添加表單到我的layout.phtml?網站範圍Zend_Form

我希望能夠通過我的網站上的每種表單持續使用搜索表單和登錄表單。

+0

我的答案有幫助嗎? – Andrew 2009-10-06 14:21:30

回答

7

我有一個博客文章,解釋這一點:http://blog.zero7ict.com/2009/11/how-to-create-reusable-form-zend-framework-zend_form-validation-filters/

在您的應用程序文件夾中創建一個表單文件夾

這是一個例子形式:

<?php 
class Form_CreateEmail extends Zend_Form 
{ 
public function __construct($options = null) 
{ 
    parent::__construct($options); 

    $this->setName('createemail'); 
    $title = new Zend_Form_Element_Text('title'); 
    $title->setLabel('Subject') 
    ->setRequired(true) 
    ->addFilter('StripTags') 
    ->addFilter('StringTrim') 
    ->addValidator('NotEmpty'); 
    $info = new Zend_Form_Element_Textarea('info'); 
    $info->setLabel('Email Content') 
    ->setAttribs(array('rows' => 12, 'cols' => 79)); 
    $submit = new Zend_Form_Element_Submit('submit'); 
    $submit->setAttrib('id', 'submitbutton'); 
    $this->addElements(array($title, $info, $submit)); 
} 

} 
?> 

然後,您可以從您的控制器調用它像這樣:

$form = new Form_CreateEmail(); 
     $form->submit->setLabel('Add'); 
     $this->view->form = $form; 

並顯示它來回m你查看使用

echo $this->form; 

希望這會有所幫助。

編輯:如果你想要這個被列入everypage你可以創建一個新的輔助文件在您的意見

文件夾中創建文件夾的助手,並創建一個文件loginHelper.php

class Zend_View_Helper_LoginHelper 
{ 
    function loginHelper() 
    { 

$form = new Form_CreateEmail(); 
     $form->submit->setLabel('Add'); 
     return = $form; 

    } 
} 

這可能從您的佈局使用輸出:

<?php echo $this->LoginHelper(); ?>  
+1

請堅持編碼標準!你的課應該是Form_CreateEmail! (如在Zend_View_Helper_LoginHelper中) – 2009-10-05 19:17:28

+0

錯過了那個,謝謝指出:) – Andrew 2009-10-06 07:40:27

+0

init()存在,所以你不必重載'__construct($ options)'。 – chelmertz 2009-11-03 16:45:35

2

在佈局只是做:

$form = new Loginform(); 
echo $form->render(); 

你只需要確保您指定張貼到形式的控制器/動作,所以這是不會發布到任何控制器,你現在是在,這是默認行爲。