对 Zend_Form 中的特定子表单使用自定义 isValid() 函数

Posted

技术标签:

【中文标题】对 Zend_Form 中的特定子表单使用自定义 isValid() 函数【英文标题】:Using custom isValid() function for specific subform in Zend_Form 【发布时间】:2010-09-07 09:32:20 【问题描述】:

我有一个包含多个子表单的表单。我已经用自己的方法覆盖了表单的 isValid 函数,但找不到任何关于如何为每个子表单设置 isValid 函数的文档。

有人可以发布链接或示例代码,以便我学习如何执行此操作。

提前致谢。

【问题讨论】:

【参考方案1】:
<?php
class Your_Sub_Form extends Zend_Form_SubForm

    public function isValid($data)
    
        // Your custom validation-logic here
        return parent::isValid($data);
    

    public function init()
    
        ...
    


class Your_Form extends Zend_Form

    public function isValid($data)
    
        return parent::isValid($data);
    

    public function init()
    
        $this->addSubForm(new Your_Sub_Form(), 'subform');

        $this->addElement('submit', 'submit', array(
            'ignore'   => true,
            'label'    => 'Submit',
        ));
    

【讨论】:

【参考方案2】:
$form1 = new ..._Form1();
$form2 = new ..._Form2();

if ($form1->isValid($this->getRequest()->getPost())) 
   ...


if ($form2->isValid($this->getRequest()->getPost())) 
   ...

【讨论】:

【参考方案3】:

尝试使用 Zend_Validate_Callback http://framework.zend.com/manual/en/zend.validate.set.html 来验证您想要的特殊字段。您可以通过上下文访问其他字段值。

【讨论】:

以上是关于对 Zend_Form 中的特定子表单使用自定义 isValid() 函数的主要内容,如果未能解决你的问题,请参考以下文章

Zend_Form 值在同一页面中使用多个表单时丢失

Zend_Form 创建校验和解析表单的基础--(手冊)

Zend 表单/子表单部分渲染

如何将 Zend_Dojo 表单元素动态添加到 zend_form?

自定义 segue 到导航控制器层次结构中的特定子视图

如何处理子表单中的特定元素并使用 [] 正确显示