Zend中的多页表单过早地验证所有表单

时间:2011-04-17 11:21:48

标签: zend-framework

我一直在使用文档{Zem Form Advanced Usage部分 - {3}}中的多页表单教程。

我的第一页加载正常,但是当我提交它时,第二页加载并包含验证错误消息。 (显然,在用户填写字段之前,我不希望看到此页面的验证错误...)

我已将其追踪到formIsValid()函数的最后一行。似乎这里对三种形式的所有元素(不仅仅是当前的元素)运行验证,所以在第二页上显示错误并不奇怪。

我在本教程末尾的评论中尝试了这个建议,即$ data [$ key] = $ info [$ key]。

您是否对本教程有所了解?你是怎么解决这个问题的?

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,这就是我如何解决它。

替换

public function formIsValid()
    {
        $data = array();
        foreach ($this->getSessionNamespace() as $key => $info) {
            $data[$key] = $info;
        }

        return $this->getForm()->isValid($data);
    }

使用

   public function formIsValid()
    { 
       $data = array();
        foreach ($this->getSessionNamespace() as $key => $info) {
            $data[$key] = $info[$key];
        }
        return (count($this->getStoredForms()) < count($this->getPotentialForms()))? false : $this->getForm()->isValid($data);
    }

答案 1 :(得分:0)

文件内容如下:

  

目前,多页表单不是   Zend_Form正式支持;   但是,大部分都支持实施   它们是可用的,可以使用   用一点额外的工具。

     

创建多页表单的关键   是利用子形式,但是   每个只显示一个这样的子表格   页。这允许您提交 a   一次单个子表格和   验证它,但不处理表单   直到所有子表格都完整。

您确定已经验证了单个子表单而不仅仅是整个表单吗?