代码之家  ›  专栏  ›  技术社区  ›  Valentin Golev

用现有标记呈现Zend_窗体的最佳方法

  •  2
  • Valentin Golev  · 技术社区  · 15 年前

    我想使用Zend_表单,因为它有验证和筛选等功能,但是表单的标记已经完成了。更糟糕的是,它不是很标准化,所以写我的定制装饰不是一个解决方案。

    有没有一种简单的方法可以“应用”Zend_窗体到现有的自定义标记?我认为这是一个常见的问题。

    2 回复  |  直到 15 年前
        1
  •  11
  •   Stefan Gehrig    15 年前

    如果在手工制作的HTML表单中使用与 Zend_Form 您可以简单地在数据接收时实例化表单:

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

    不需要使用 森达型 如果你不想的话。

    第二种选择是将自定义标记与表单元素组合在一起:

    // 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_Filter_Input 也就是说,简单地说, 森达型 没有所有的标记。作为 Zend_滤波器输入 可以使用您能够使用的所有标准和自定义过滤器和验证器 森达型 过渡应该相当容易。

        2
  •  1
  •   David Snabel-Caunt    15 年前

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

    Official Reference Guide 更具体地说,这是泽德 devzone article .