Вопрос о том, как должны работать перенаправления

Итак, у меня есть веб-приложение, над которым я работаю, с формой, которая требует, чтобы все поля были заполнены перед отправкой. Если вы попытаетесь отправить приложение без заполнения поля, оно снова загрузит страницу с ошибками. После того, как вы заполните все поля и нажмете кнопку «Отправить», произойдет перенаправление на ту же страницу и отобразится сообщение, созданное на основе flashdata. См. Упрощенный пример ниже.

Контроллер приветствия:

function show_view() 
{
  $this->load->view('form');
}

function process_form()
{
  // make the 'quality' field required
  $this->form_validation->set_rules('quality', 'Quality', 'required');

  if($this->form_validation->run() == FALSE) //if the fields are NOT filled in...
  {
    echo form_error('quality');
    $this->load->view('form'); //reload the page  
  }
  else  // if the fields are filled in...
  {
    // set success message in flashdata so it can be called when page is refreshed. 
    $this->session->set_flashdata('message', 'Your rating has been saved');
    redirect(welcome/show_view);
  }
}

Теперь, чтобы проиллюстрировать мою проблему, скажем, я нахожусь «дома» view, и я перехожу к представлению «форма». Если я заполню поле «Качество» и нажму «Отправить», я буду перенаправлен обратно в представление «Форма» с сообщением об успешном завершении. Если я нажму кнопку «Назад» в браузере, я вернусь в «домашний» вид. ВСЕ РАБОТАЕТ, КАК ОЖИДАЕМЫЙ

Теперь допустим, что я нахожусь на «домашнем» представлении и перехожу к представлению «форма». Если я нажму кнопку отправки, не заполнив поле «качество», представление «форма» будет перезагружено снова и отобразит сообщение об ошибке. Если я затем заполню поле «качество» и нажму «Отправить», я буду перенаправлен обратно в представление «форма» с сообщением об успешном завершении. Проблема в том, что если я нажму кнопку «Назад» в браузере, он вернет меня на страницу формы с ошибкой, и мне нужно снова нажать кнопку «Назад», чтобы вернуться к «домашнему» виду.

Какова наилучшая практика кодирования, чтобы, если пользователь отправляет форму с ошибками, она отображала ошибки, и если они исправляют ошибки и отправьте форму еще раз, отобразится сообщение об успешном завершении, и если они снова нажмут в браузере, он вернет их обратно в «домашний» вид ??

7
задан Catfish 23 April 2011 в 00:44
поделиться