Zend framework 需要Zend表单下拉菜单验证的帮助吗

Zend framework 需要Zend表单下拉菜单验证的帮助吗,zend-framework,zend-form,Zend Framework,Zend Form,我正在做一个zend框架项目,我需要用户选择学校,然后转到下一个表格,然后选择年级 例如,用户选择ABC高中,然后选择“8年级” 学校和年级下拉菜单都是软编码的,从数据库中获取数据 我的问题是,当用户选择一所学校,然后在下一个年级表格上,如果他们没有选择任何值并单击“提交”,则返回一个验证错误“值是必需的,不能为空”,这是正确的,但下拉菜单随后变为空 我想知道如果表单未验证,如何将值重新填充回“成绩”下拉菜单 非常感谢 这是我的密码 这是我生成等级值的函数(从数据库中提取) 处理年度选择表的代码

我正在做一个zend框架项目,我需要用户选择学校,然后转到下一个表格,然后选择年级

例如,用户选择ABC高中,然后选择“8年级”

学校和年级下拉菜单都是软编码的,从数据库中获取数据

我的问题是,当用户选择一所学校,然后在下一个年级表格上,如果他们没有选择任何值并单击“提交”,则返回一个验证错误“值是必需的,不能为空”,这是正确的,但下拉菜单随后变为空

我想知道如果表单未验证,如何将值重新填充回“成绩”下拉菜单

非常感谢

这是我的密码

这是我生成等级值的函数(从数据库中提取)

处理年度选择表的代码

<?php

class Application_Form_SchoolSelection extends ZendX_JQuery_Form
{
        public function init()
                {
                        $this->setName('schoolSelection');



                        $school = new Application_Model_DbTable_School;
                        $schoolValues = $school->getSchoolValues();

                        array_unshift($schoolValues, array ('key' =>'' , 'value' =>'Please Specify'));


                        $schoolElement = new Zend_Form_Element_Select('school');
                        $schoolElement->addMultiOptions($schoolValues);
                        $schoolElement->setLabel('School');
                        $schoolElement->setRequired(true);
                        $schoolElement->setRegisterInArrayValidator(false);



                        $submitElement = new Zend_Form_Element_Submit('submit');
                        $submitElement->setLabel("Next");


                        $this->addElements(array(
                        $schoolElement,
                        $submitElement
                        ));
                }

}
?>
<?php

class Application_Form_YearSelection extends ZendX_JQuery_Form
{
        public function init()
                {
                        $this->setName('yearSelection');




                          $yearElement = new Zend_Form_Element_Select('year');

                          $yearElement->setLabel('Year');
                          $yearElement->setRequired(true);
                          $yearElement->setRegisterInArrayValidator(false);

                        $schoolIdElement = new Zend_Form_Element_Hidden('schoolId');

                        $submitElement = new Zend_Form_Element_Submit('submit');
                        $submitElement->setLabel("Next");


                        $this->addElements(array(
                        $yearElement,
                        $schoolIdElement,
                        $submitElement
                        ));
                }

}
?>
公共函数processYearSelectionAction() {

}

学校遴选表格

<?php

class Application_Form_SchoolSelection extends ZendX_JQuery_Form
{
        public function init()
                {
                        $this->setName('schoolSelection');



                        $school = new Application_Model_DbTable_School;
                        $schoolValues = $school->getSchoolValues();

                        array_unshift($schoolValues, array ('key' =>'' , 'value' =>'Please Specify'));


                        $schoolElement = new Zend_Form_Element_Select('school');
                        $schoolElement->addMultiOptions($schoolValues);
                        $schoolElement->setLabel('School');
                        $schoolElement->setRequired(true);
                        $schoolElement->setRegisterInArrayValidator(false);



                        $submitElement = new Zend_Form_Element_Submit('submit');
                        $submitElement->setLabel("Next");


                        $this->addElements(array(
                        $schoolElement,
                        $submitElement
                        ));
                }

}
?>
<?php

class Application_Form_YearSelection extends ZendX_JQuery_Form
{
        public function init()
                {
                        $this->setName('yearSelection');




                          $yearElement = new Zend_Form_Element_Select('year');

                          $yearElement->setLabel('Year');
                          $yearElement->setRequired(true);
                          $yearElement->setRegisterInArrayValidator(false);

                        $schoolIdElement = new Zend_Form_Element_Hidden('schoolId');

                        $submitElement = new Zend_Form_Element_Submit('submit');
                        $submitElement->setLabel("Next");


                        $this->addElements(array(
                        $yearElement,
                        $schoolIdElement,
                        $submitElement
                        ));
                }

}
?>

年级(年级)选择表

<?php

class Application_Form_SchoolSelection extends ZendX_JQuery_Form
{
        public function init()
                {
                        $this->setName('schoolSelection');



                        $school = new Application_Model_DbTable_School;
                        $schoolValues = $school->getSchoolValues();

                        array_unshift($schoolValues, array ('key' =>'' , 'value' =>'Please Specify'));


                        $schoolElement = new Zend_Form_Element_Select('school');
                        $schoolElement->addMultiOptions($schoolValues);
                        $schoolElement->setLabel('School');
                        $schoolElement->setRequired(true);
                        $schoolElement->setRegisterInArrayValidator(false);



                        $submitElement = new Zend_Form_Element_Submit('submit');
                        $submitElement->setLabel("Next");


                        $this->addElements(array(
                        $schoolElement,
                        $submitElement
                        ));
                }

}
?>
<?php

class Application_Form_YearSelection extends ZendX_JQuery_Form
{
        public function init()
                {
                        $this->setName('yearSelection');




                          $yearElement = new Zend_Form_Element_Select('year');

                          $yearElement->setLabel('Year');
                          $yearElement->setRequired(true);
                          $yearElement->setRegisterInArrayValidator(false);

                        $schoolIdElement = new Zend_Form_Element_Hidden('schoolId');

                        $submitElement = new Zend_Form_Element_Submit('submit');
                        $submitElement->setLabel("Next");


                        $this->addElements(array(
                        $yearElement,
                        $schoolIdElement,
                        $submitElement
                        ));
                }

}
?>

显然,您需要重新填充Select字段的选项


在您的
processYearSelectionAction
中,在验证失败部分,只需抓取存储在隐藏字段中的学校ID,并以与在
processSchoolSelectionAction
中相同的方式使用它来填充字段选项。

显然,您需要重新填充选择字段的选项


在您的
processYearSelectionAction
中,在验证失败部分,只需抓取存储在隐藏字段中的学校ID,并以与在
processSchoolSelectionAction
中相同的方式使用它来填充字段选项。

我就是这样做的:

在控制器中,当窗体创建时,从请求传递数据:

$some_selected_data = $this->_getParam('param_from_request'); // you need to validate this

$form = new Application_Form_SchoolSelection( array('some_data' => $some_selected_data) );
然后,在Form类中获得如下值:

$data = $this->getAttrib('some_data'); // the key value of array above
只要问问

if($data) {

 // get value from DB and
 //SET VALUE TO Zend_Form_Element
}

我就是这样做的:

在控制器中,当窗体创建时,从请求传递数据:

$some_selected_data = $this->_getParam('param_from_request'); // you need to validate this

$form = new Application_Form_SchoolSelection( array('some_data' => $some_selected_data) );
然后,在Form类中获得如下值:

$data = $this->getAttrib('some_data'); // the key value of array above
只要问问

if($data) {

 // get value from DB and
 //SET VALUE TO Zend_Form_Element
}

非常感谢它将值填充回下拉菜单,但是验证错误消息消失“value是必需的,不能为空”这是代码$schoolId=$form->getValue('schoolId')$学年=新应用程序\模型\数据库\学年()$学年值=$schoolYear->getYearValues($schoolId);数组_unshift($schoolYearValues,数组('key'=>'','value'=>'请指定')$form=$this->getYearSelectionForm()$表单->年份->添加多选项($schoolYearValues)$表单->学校ID->设置值($schoolId)$此->视图->表单=$form;您确定以正确的方式使用数组_unshift吗?尝试更改数组_unshift($schoolYearValues,array('key'=>'','value'=>'请指定');数组_unshift($schoolYearValues,数组(''=>'value'));非常感谢它将值填充回下拉菜单,但是验证错误消息消失“value是必需的,不能为空”这是代码$schoolId=$form->getValue('schoolId')$学年=新应用程序\模型\数据库\学年()$学年值=$schoolYear->getYearValues($schoolId);数组_unshift($schoolYearValues,数组('key'=>'','value'=>'请指定')$form=$this->getYearSelectionForm()$表单->年份->添加多选项($schoolYearValues)$表单->学校ID->设置值($schoolId)$此->视图->表单=$form;您确定以正确的方式使用数组_unshift吗?尝试更改数组_unshift($schoolYearValues,array('key'=>'','value'=>'请指定');数组_unshift($schoolYearValues,数组(''=>'value'));