我在表单中有两个下拉列表,用于选择部门和名称。
$model = new Application_Model_DbTable_Department();
$departments = $model->fetchAll();
$department = $this->createElement('select','department');
$department->setLabel('Department');
$department->setAttrib('class', 'department');
foreach($departments as $d)
$department->addMultiOption($d->id, $d->depname);
$model = new Application_Model_DbTable_Designation();
$designations = $model->fetchAll('depid=1');
$designation = $this->createElement('select','designation');
$designation->setLabel('Designation');
$designation->setAttrib('class', 'designation');
$designation->setRegisterInArrayValidator(false);
foreach($designations as $ds)
$designation->addMultiOption($ds->id, $ds->designation);
我在部门更改时有指定查找的jquery功能。我的问题是,如果表单有验证错误,提交表单时,我需要显示所选的名称。
答案 0 :(得分:1)
在这种情况下,最好在实例化表单后执行表单填充。原因:几乎不可能在初始化时获取表单元素的值,因为它们尚不存在(即,init()
的{{1}}方法)。你可以这样做:
Zend_Form
这将是你的控制器动作或其他东西......但实质上,你的指定选项会从当前部门获取值,如果可以从帖子获得,否则它将落入默认选择。 $form = new Your_Zend_Form();
$designation = $form->getElement('designation');
$departmentId = null;
$request = $this->getRequest();
if($request->isPost()){
$departmentId = $request->getPost('department');
}
$desigantionOptions = $this->_getDesignationOptions($departmentId);
$designation->addMultiOptions($desigantionOptions);
的方法签名如下:
$this->_getDesignationOptions($departmentId)
这将返回一个值/选项对的数组。