Hej,
Próbuję opakować checkboxy w formularzu w obsługę błędów. Wykorzystałem do tego znaną metodę "obejścia" tego problemu w postaci:
<input type="hidden" name="agreement" value="0">
<input type="checkbox" name="agreement" id="agreement" class="form-check-input" value="1">
if($this->form_validation->run()) {
$data['success'] = true;
$this->load->view('Success');
} else {
foreach($this->input->post() as $key => $value) {
if($this->input->post('agreement') == 0) {
$data['errors']['agreement'] = form_error('agreement');
}
$data['errors'][$key] = form_error($key);
}
}
W narzędziach developerskich widzę, że wartość 'agreement' (po wysłaniu formularza) przy braku zaznaczenia jest zerem, po zaznaczeniu pojawia się wartość podwójna, czyli:
agreement: 0
agreement: 1
Podobno tak może być i wartość z zerem jest ignorowana. Tylko problem polega na tym, że form_error('agreement') nie jest przypisywane do tablicy $data['errors']['agreement']. Jak dla testu wpisałem tam jakiś ciąg znaków, to wartość pojawiła się w tablicy. Docelowo powinno wyglądać to tak:
["agreement"] => string(ilość_znaków) "wartość_pola_form_error"
a wygląda tak:
["agreement"] => string(0) ""
Chyba, że ja coś robię źle i macie lepszy pomysł na obsługę checkboxów w formularzu. Siedzę nad tym od paru dni i nie mogę wyjść z podziwu, jakie to jest upierdliwe :)