Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [CI] Edycja danych z bazy a form_validation
abort
post
Post #1





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

Ostrzeżenie: (0%)
-----


W kontrolerze definiuję sobie za pomocą $this->form_validation->set_rules, jakie mogą być dopuszczalne wartości pól w formatce, następnie wywołuję widok:
  1. $hw = $this->sprzet->get_hwdata ($id); // id to numer indeksu w bazie (auto_increment)
  2. $data['hw'] = $hw;
  3. if ($this->form_validation->run() == FALSE) {
  4. $this->load->view('/hardware/edit', $data);
  5. } else {
  6. [...]
  7. }

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:
  1. foreach (array ( [tu indeksy przekazywane przez HTTP_POST] ) as $key) {
  2. if (isset ($_POST [$key])) {
  3. $hw[$key] = set_value ($key);
  4. } else {
  5. $hw[$key] = $db[$key];
  6. }
  7. }
  8.  
  9. // a dalej w kodzie sprawdzam, co wprowadził user, i jeśli jest źle, to wizualnie mu to sygnalizuję
  10. // (np. przez zmianę backgroundu elementu INPUT TYPE=TEXT)
  11.  
  12. $manufact = array (
  13. 'name' => 'manufact',
  14. 'id' => 'manufact',
  15. 'value' => $hw['manufact'],
  16. 'class' => ''
  17. );
  18. if (form_error ('manufact')) {
  19. $manufact['class'] .= 'error';
  20. }
  21. echo '<div class="manufact">Producent:' . form_input ($manufact) . '</div>';


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.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 11:51