2016-09-16 11 views
0

У меня есть алгоритм, как это:Как использовать set_value, но does'nt использует 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 
    } 

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

ответ

0

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

Сообщение «Данные уже существует» отображается, потому что вы устанавливаете его как flashdata, который будет сохраняться через перенаправление, но все остальное по существу потеряно, поэтому, если вы хотите повторно заполнить форму, используя 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

Спасибо за ответ – Four