使用现有标记呈现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() ?> 
     &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

使用ViewScript表单装饰器,专门设计用于将表单呈现为自定义标记,有很多方法可以做到这一点。它的工作方式与Stefan给出的例子类似,但您可以使用自己的脚本或部分,如果您只想将元素,标签和错误放入自定义标记中,则需要做更少的工作。

查看Official Reference Guide,更具体地说,这个Zend devzone article