我想使用Zend_Form,因爲它的驗證和過濾器等。但表單的標記已經完成。更糟的是,它不是很標準化,所以編寫我的自定義裝飾器不是一個解決方案。使用現有標記呈現Zend_Form的最佳方式
是否有一種簡單的方法來將Zend_Form「應用」到現有的非常自定義的標記中?我認爲這是一個普遍的問題。
我想使用Zend_Form,因爲它的驗證和過濾器等。但表單的標記已經完成。更糟的是,它不是很標準化,所以編寫我的自定義裝飾器不是一個解決方案。使用現有標記呈現Zend_Form的最佳方式
是否有一種簡單的方法來將Zend_Form「應用」到現有的非常自定義的標記中?我認爲這是一個普遍的問題。
如果您使用您的手工製作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() ?>
<?php echo $form->button2->renderViewHelper() ?>
</div>
</form>
,如果你只想要過濾和驗證輸入,可避免Zend_Form
所有的膨脹和使用Zend_Filter_Input
,這是,只是說,Zend_Form
沒有所有的標記的東西。由於Zend_Filter_Input
可以使用所有可以與Zend_Form
一起使用的標準和自定義過濾器和驗證器,所以過渡應該相當容易。
使用ViewScript表單裝飾器,專門設計用於將表單呈現爲自定義標記,有很多方法可以做到這一點。它的工作方式與Stefan給出的例子類似,但您可以使用自己的腳本或部分,如果您只想將元素,標籤和錯誤放入自定義標記中,則需要做更少的工作。
查看Official Reference Guide,更具體地說,這個Zend devzone article。
我真的想從渲染得到的是驗證錯誤和表單值:) – 2009-11-18 13:51:46