Php zend framework子窗体是否有效?

Php zend framework子窗体是否有效?,php,zend-framework,subforms,Php,Zend Framework,Subforms,我有一个表单,上面有几个子表单。我有一个isValid方法用于检查表单中是否只有一个子表单有效。例如,我必须检查子表单2是否正确验证。如果子窗体验证,则应成功验证整个窗体,即使其他子窗体的值错误。它们不应该被验证。我试过这样的方法: if($subform->isValidPartial($_POST)) return true; }else{ return false; } 但是没有成功。此代码始终返回true。如果在未覆盖isValid的情况下正常验证整个表单,则子表

我有一个表单,上面有几个子表单。我有一个isValid方法用于检查表单中是否只有一个子表单有效。例如,我必须检查子表单2是否正确验证。如果子窗体验证,则应成功验证整个窗体,即使其他子窗体的值错误。它们不应该被验证。我试过这样的方法:

if($subform->isValidPartial($_POST))
    return true;
}else{
    return false;
}
但是没有成功。此代码始终返回true。如果在未覆盖isValid的情况下正常验证整个表单,则子表单将正确验证,但所有子表单都已验证。

如果至少有一个子表单有效,IsubFormValid将返回true。您可以指定子窗体名称或传递null

用法示例:

class Example extends My_Form
{
    public function init()
    {
        $subForm1 = new Zend_Form_SubForm();
        $subForm1->addElement($this
            ->createElement('text', 'name')
            ->setRequired(true));

        $subForm2 = new Zend_Form_SubForm();
        $subForm2->addElement($this
            ->createElement('text', 'name')
            ->setRequired(true));

        $this->addSubForm($subForm1, 'form1');
        $this->addSubForm($subForm2, 'form2');

        $this->addElement($this->createElement('submit', 'send'));
    }    
}

/* ... */
public function indexAction()
{
     $form = new Example();

     if ($this->_request->isPost()) {
         if ($form->isSubFormValid(null, $this->_request->getPost())) {
             die('is valid');
         }
     }

     $this->view->form = $form;
}

/* ... */

非常感谢。它会在树状子表单结构中工作吗?例如,主窗体ArraySubform1 ArraySubform3、子窗体4、子窗体2ArraySubform5、子窗体6?
class Example extends My_Form
{
    public function init()
    {
        $subForm1 = new Zend_Form_SubForm();
        $subForm1->addElement($this
            ->createElement('text', 'name')
            ->setRequired(true));

        $subForm2 = new Zend_Form_SubForm();
        $subForm2->addElement($this
            ->createElement('text', 'name')
            ->setRequired(true));

        $this->addSubForm($subForm1, 'form1');
        $this->addSubForm($subForm2, 'form2');

        $this->addElement($this->createElement('submit', 'send'));
    }    
}

/* ... */
public function indexAction()
{
     $form = new Example();

     if ($this->_request->isPost()) {
         if ($form->isSubFormValid(null, $this->_request->getPost())) {
             die('is valid');
         }
     }

     $this->view->form = $form;
}

/* ... */