2009-11-18 103 views
2

我想使用Zend_Form,因爲它的驗證和過濾器等。但表單的標記已經完成。更糟的是,它不是很標準化,所以編寫我的自定義裝飾器不是一個解決方案。使用現有標記呈現Zend_Form的最佳方式

是否有一種簡單的方法來將Zend_Form「應用」到現有的非常自定義的標記中?我認爲這是一個普遍的問題。

回答

11

如果您使用您的手工製作HTML的形式相同的名稱,如您Zend_Form你可以簡單的實例化數據接收形式:

public function processFormAction() 
{ 
    $form = new My_Form(); // this is your Zend_Form 
    if ($form->isValid($_POST)) { 
     // success! 
    } else { 
     // failure! 
    } 
} 

沒有必要使用的渲染能力Zend_Form如果你不想。

第二個選項是你的自定義標記與形式的元素結合起來:或者

// view-script with $form being the the Zend_Form passed into the view 
<form method="<?php echo $form->getMethod() ?>" action="<?php echo $form->getAction()?>"> 
    <div id="elements"> 
     <?php echo $form->element1->renderLabel() . $form->element1->renderViewHelper() ?> 
     <br /> 
     <?php echo $form->element2->renderLabel() . $form->element2->renderViewHelper() ?> 
    </div> 
    <div id="buttons"> 
     <?php echo $form->button1->renderViewHelper() ?> 
     &nbsp; 
     <?php echo $form->button2->renderViewHelper() ?> 
    </div> 
</form> 

,如果你只想要過濾和驗證輸入,可避免Zend_Form所有的膨脹和使用Zend_Filter_Input,這是,只是說,Zend_Form沒有所有的標記的東西。由於Zend_Filter_Input可以使用所有可以與Zend_Form一起使用的標準和自定義過濾器和驗證器,所以過渡應該相當容易。

+0

我真的想從渲染得到的是驗證錯誤和表單值:) – 2009-11-18 13:51:46

1

使用ViewScript表單裝飾器,專門設計用於將表單呈現爲自定義標記,有很多方法可以做到這一點。它的工作方式與Stefan給出的例子類似,但您可以使用自己的腳本或部分,如果您只想將元素,標籤和錯誤放入自定義標記中,則需要做更少的工作。

查看Official Reference Guide,更具體地說,這個Zend devzone article