2

只是想知道zend表单和普通html表单之间是否有区别?

我开始知道我们可以简单地在视图文件中添加 HTML 表单并且它可以工作,但是表单元素的 isValid 函数不适用于普通的 HTML 表单。还有其他区别吗?

我是第一次构建 Zend Framework 应用程序,并且很难在 zend 表单中使用 css,所以我想知道是否可以在使用 zend 验证功能(如 isValid)的同时使用普通表单?

4

2 回答 2

3

来自Zend Form 手册

Zend_Form 简化了 Web 应用程序中的表单创建和处理。它执行以下任务:

元素输入过滤和验证

元素排序

元素和表单渲染,包括转义

元素和表单分组

元素和表单级别的配置

正是Element and Form rendering, including escaping因为生成的标记给大多数人带来麻烦的第三项,所以他们放弃了 Zend Form,但也不得不放弃其他人的便利。

但是,您可以通过使用 viewScript 装饰器来两全其美。我在这里的回答给出了一个如何做到这一点的例子,所以我不会在这里重复自己。

基本上,Zend Form 将表单创建封装到一个类中,以便于操作/验证。表单提供了属性和方法,使创建和操作表单更加容易。

HTML 表单只是没有附加功能的标记,除非您自己编写。Zend Form 将为您生成该标记,或者您可以自己生成它,如链接答案中所示。

有关更多信息,您可能需要阅读这篇关于Zend_Form 的装饰器的文章,作者是 Zend Framework 的首席开发人员 Mathew Weier O'Phinney。

于 2012-05-23T11:36:03.397 回答
1

如果你愿意,你可以把它们混合起来。您可以向元素添加验证规则,向表单添加元素,并针对表单或每个表单元素进行验证。但是您不需要渲染表单(带有 Zend_Form_Element_Hash 或类似的表单除外。)

<?php

$form = new Zend_Form;
$form->setMethod('GET');

$e1 = new Zend_Form_Element('first');
    $e1->setRequired(true);
$e2 = new Zend_Form_Element('second');
    $e2->setRequired(true);
$submit = new Zend_Form_Element_Submit('submit', array(
        'label' => 'Do something'
    ));
$form->addElements(array($e1, $e2, $submit));

if(isset($_GET) && count($_GET)) {
    if ($form->isValid($_GET)) {
        echo 'Valid';
    } else {
        echo 'Invalid';
    }
}

?>
<form method="get" action="">
    First:<input type="text" name="first" id="first" value="">
    Second:<input type="text" name="second" id="second" value="">
    <input type="submit" name="submit" id="submit" value="Go for it">
</form>
于 2014-03-07T17:53:40.273 回答