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
 
Start new topic
Odpowiedzi
abort
post
Post #2





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

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


Dzięki za wytłumaczenie w prosty sposób.
Niestety, nie programuję zawodowo (i nie zamierzam - za stary jestem, by zmieniać zawód), więc chyba aktualnie nie poradzę sobie z przerobieniem mojego kodu na taki, który zakłada robienie wszystkiego w modelu. Pomimo tego, że czuję, że tak to powinno wyglądać.

Odnośnie Kohany - być może spróbuję poznać tego frameworka, jednak to też jest sprawa "na potem". Bo na razie, skoro już wybrałem CI, to chciałbym skończyć to, co zacząłem - potem w ramach nauki Kohany mogę spróbować zmigrować swój kod z CI na Kohana.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 7.10.2025 - 01:31