Как использовать set_value, но не использует form_validation set_rules?

У меня есть такой алгоритм:

if ($this->form_validation->run() == FALSE) {
$this->load->view('costs/v_addcontainer', $data);
} elseif ($check_valid_qty == "error" || $this->form_validation->run() == FALSE) {
$this->session->set_flashdata('qty_error', 'Quantity not valid!');
redirect('Cost/add_container');
} elseif ($check_data_selling > 0) {
$this->session->set_flashdata('data_exist', 'Data already exists!');
redirect('Cost/add_container');
} else{
// insert data
}

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

0

Решение

Вы должны снова загрузить свое представление в случаях «сбоя» вместо перенаправления.

Появляется сообщение «Данные уже существуют», поскольку вы устанавливаете их как флэш-данные, которые сохраняются при перенаправлении, но все остальное по существу теряется, поэтому, если вы хотите заполнить форму с помощью set_value(), вам нужно показать его в текущем запросе.

Это также означает, что вам не нужно связываться с данными сеанса, и вы можете просто передавать свои сообщения с предупреждениями в обычном режиме.

if ($this->form_validation->run() == FALSE) {
$this->load->view('costs/v_addcontainer', $data);
} elseif ($check_valid_qty == "error") {
$data['qty_error'] = 'Quantity not valid!';
$this->load->view('costs/v_addcontainer', $data);
} elseif ($check_data_selling > 0) {
$data['data_exist'] = 'Data already exists!';
$this->load->view('costs/v_addcontainer', $data);
} else{
// insert data
}

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]