Проверка формы CodeIgniter с существующими данными $ _POST - PullRequest
2 голосов
/ 25 июня 2011

У меня есть форма, которую мне нужно проверить, но я не могу понять, как кодировать контроллер, чтобы он работал правильно при первом отображении страницы. Вот мой код (упрощенно):

function index()

  $data['somedata'] = $this->input->post('somedata');

  $this->form_validation->set_rules('event', 'Event', 'trim|required|alpha_numeric');
  ... more set_rules ...

  if($this->form_validation->run() == FALSE)
  {
    // Hasn't been run or there are validation errors
    $this->load->view('eventview', $data);
  }
  else
  {
    // Process the event
  }
}

Проблема в том, что form_validation-> run () никогда не бывает FALSE, потому что массив $ _POST содержит данные из предыдущей формы, которые используются этой второй формой. В самом начале функции form_validation-> run () находится следующий код:

// Do we even have any data to process? Mm?
if (count($_POST) == 0)
{
  return FALSE;
}

Так как данные $ _POST существуют, счетчик всегда больше нуля, что приводит к проверке, которая будет обработана при начальной загрузке страницы. Какие-нибудь предложения относительно того, как я мог бы обойти это?

Ответы [ 2 ]

0 голосов
/ 26 июня 2011

В первой форме установить скрытый ввод

<input type="hidden" name="form1" value="form1" />

Затем в вашем контроллере проверьте, установлено ли поле, если это так, сохраните текущий массив записей, а затем сбросьте его.

if(isset($_POST['form1'])){
  $old_post = $_POST;
  unset($_POST);
}

as I assume you are accessing the $_POST array in your view, instead pass `$old_post` through and use that, 

например. (isset($old_post) ? $old_post['field_name'] : set_value('field_name))

Удачи.

0 голосов
/ 25 июня 2011

Я бы посоветовал вам сохранить данные из вашей первой формы в сеансах, а затем перенаправить на вторую форму вместо того, чтобы перейти непосредственно к следующей, с вашими почтовыми данными.

Это также будетболее гибкий, если вам нужно повторно использовать любые из представленных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...