Итак, у меня есть веб-приложение, над которым я работаю, с формой, которая требует, чтобы все поля были заполнены перед отправкой. Если вы попытаетесь отправить приложение без заполнения поля, оно снова загрузит страницу с ошибками. После того, как вы заполните все поля и нажмете кнопку «Отправить», произойдет перенаправление на ту же страницу и отобразится сообщение, созданное на основе 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, и я перехожу к представлению «форма». Если я заполню поле «Качество» и нажму «Отправить», я буду перенаправлен обратно в представление «Форма» с сообщением об успешном завершении. Если я нажму кнопку «Назад» в браузере, я вернусь в «домашний» вид. ВСЕ РАБОТАЕТ, КАК ОЖИДАЕМЫЙ
Теперь допустим, что я нахожусь на «домашнем» представлении и перехожу к представлению «форма». Если я нажму кнопку отправки, не заполнив поле «качество», представление «форма» будет перезагружено снова и отобразит сообщение об ошибке. Если я затем заполню поле «качество» и нажму «Отправить», я буду перенаправлен обратно в представление «форма» с сообщением об успешном завершении. Проблема в том, что если я нажму кнопку «Назад» в браузере, он вернет меня на страницу формы с ошибкой, и мне нужно снова нажать кнопку «Назад», чтобы вернуться к «домашнему» виду.
Какова наилучшая практика кодирования, чтобы, если пользователь отправляет форму с ошибками, она отображала ошибки, и если они исправляют ошибки и отправьте форму еще раз, отобразится сообщение об успешном завершении, и если они снова нажмут в браузере, он вернет их обратно в «домашний» вид ??