Forms zend形式相关下拉列表
我有两个选择部门和名称的下拉列表Forms zend形式相关下拉列表,forms,validation,zend-framework,Forms,Validation,Zend Framework,我有两个选择部门和名称的下拉列表 $model = new Application_Model_DbTable_Department(); $departments = $model->fetchAll(); $department = $this->createElement('select','department'); $department->setLabel('Department'); $department->setAttrib('class', 'depa
$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函数,可以在部门发生变化时查找名称。我的问题是在提交表单时如果表单有验证错误,我需要显示所选的名称 在这种情况下,最好在表单实例化后进行表单填充。原因:初始化时几乎不可能获取表单元素的值,因为它们还不存在(即,在
Zend\u表单的init()方法中)。您可以这样做:
$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->\u getDesignationOptions($departmentId)
的方法签名如下:
protected function _getDesignationOptions($departmentId = null);
这将返回一个值/选项对数组