我正在使用會話在我的Zend應用程序中使用選項填充多選框。如何使用會話填充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);
顯示了正確的選擇,但是當表單在用戶提交時加載,多重選擇顯示開始時存在的選項,即用戶剛選擇和提交的選項不會從多重選擇中取出,只有當用戶再次提交表單時然後多選框更新。
欣賞幫助。
我的表單很長很複雜。代碼 - http://pastebin.com/gBWM42ct - 我用來初始填充多重選擇框 - 我傳遞一個關鍵字名稱數組,它是從表單中循環的會話中檢索的,以創建選項爲多選。 – Sid 2011-03-04 10:17:26
但這只是元素初始化的代碼。我的意思是你如何填充multiselectbox?什麼是保持setMultioption和填充選擇框鍵/值對的代碼? – ufucuk 2011-03-04 11:26:55
http://pastebin.com/9pBs031c – Sid 2011-03-04 12:09:58