我正在使用会话在 Zend 应用程序中填充带有选项的多选框。
用户选择一个或多个选项并填写表单上的其他字段,然后提交。如果用户没有选择多选中的所有选项,则再次显示表单,但多选仅具有用户上次未选择的选项。此过程继续进行,直到多选中没有更多选项可供处理。
这是我用来摆脱已经处理的选项的代码,以便它们不用于填充多选框:
if($form_successful){
// TODO remove $post['keyword_names'] (i.e. already processed) from $keyword_names (that come from $_SESSION)
$keyword_names = array_diff($keyword_names, $post['keyword_names']);
print_r($keyword_names);
if(is_array($keyword_names) && !empty($keyword_names)){
// save updated $keyword_names into $_SESSION['workflow1']
$session = new Zend_Session_Namespace('workflow1');
$session->keyword_names = $keyword_names;
// set flag to false so that we display form again
$form_successful = false;
}else{ // all keywords have been assigned
// go to next step
$this->_redirect('/workflow-1/step-'.($step+1).'/');
}
}
print_r($keyword_names);
显示正确的选项,但是当用户提交时加载表单时,多选显示从一开始就存在的选项,即用户刚刚选择并提交的选项没有从多选中取出,它是只有当用户再次提交表单时,多选框才会更新。
感谢帮助。