Я использую сеансы для заполнения поля множественного выбора с опциями в моем приложении 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);
отображает правильные параметры, однако, когда форма загружается, когда пользователь отправляет, мультиселектор отображает параметры, которые были там с самого начала, т.е. параметры, которые пользователь только что выбрал и отправил, не вынимаются из множественный выбор, только когда пользователь снова отправляет форму, обновляется окно множественного выбора.
Ценю помощь.