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