$hw = $this->sprzet->get_hwdata ($id); // id to numer indeksu w bazie (auto_increment) $data['hw'] = $hw; if ($this->form_validation->run() == FALSE) { $this->load->view('/hardware/edit', $data); } else { [...] }
I fajnie - do widoku zostały przekazane dane. Chciałbym jednak, aby wprowadzenie błędnych danych skutkowało zmianą np. koloru wyświetlenia elementu "<input type=text>", z zachowaniem (wyświetleniem) danych wprowadzonych przez użytkownika. Wymyśliłem sobie więc, że w widoku wpakuję ciukę kodu, efekt:
$hw[$key] = set_value ($key); } else { $hw[$key] = $db[$key]; } } // a dalej w kodzie sprawdzam, co wprowadził user, i jeśli jest źle, to wizualnie mu to sygnalizuję // (np. przez zmianę backgroundu elementu INPUT TYPE=TEXT) 'name' => 'manufact', 'id' => 'manufact', 'value' => $hw['manufact'], 'class' => '' ); if (form_error ('manufact')) { $manufact['class'] .= 'error'; }
Pytania:
1. Czy da się prościej?
2. kłuje w oczy użycie $_POST, ale taka konstrukcja działa, podczas gdy użycie if (isset ($this->input->post($key))) wyrzuca błąd: Fatal error: Can't use method return value in write context in [...] - o co kaman, przecież nic nie zapisuję, tylko testuję, czy "coś" istnieje...
3. Da się (to co chcę) zrobić inaczej, prościej, bardziej elegancko?
P.S.
CodeIgniter 2.1.0, więc całkiem nowy.