Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CodeIgniter] Problem z set_value w formularzach
Forum PHP.pl > Forum > PHP > Frameworki
in5ane
Witam. Mam problem przy framework'u CodeIgniter. Tworzę formularz i gdy robię np.:
  1. echo form_input('city', set_value('city'), 'class="textfield"');
to po próbie wysłania formularza i zwróceniu ewentualnych błędów (np. nazwa użytkownika jest zajęta, czy niepoprawny e-mail) to czyści się formularz i użytkownik musi wpisywać na nowo. Problem jest o tyle dziwny, że przy 1/3 pól formularza set_value działa, a reszty nie działa. Nie wiem czy to ma jakieś znaczenie, ale w widoku te 2/3 pól mam w innym DIV'ie. Proszę o pomoc. Próbowałem jeszcze z flashdatą, ale też mi coś nie chodziło. Patrzyłem w Internecie i coś tam pisało, że to bug w CodeIgniter, ale nie znalazłem odpowiedniego fixa.

@edit: nie działa również, nawet jak zrobiłem coś takiego:
  1. $data['city'] = $this->input->post('city');
i wysłałem to do widoku.

@edit2: gdy usunąłem oddzielny DIV, to nic nie pomogło. Nie mam już nerwów.

@edit3: zauważyłem, że chyba problemem jest to, że nie wysyłają się dane z tych input'ów.
szok
Żeby pole wstawiło się do set_value musi być wpisane na liśte set_rules w form_validation. Masz te pole tam wpisane?
Nie musisz wpisywać żadnych reguł. Wystarczy tylko że będzie:

  1. $this->form_validation->set_rules('city', 'Miasto', '');


Nie wiem czy dobrze wpisałem bo dawno w tym nie pisałem.
in5ane
Problem z tym, że istnieją reguły dla tych pól.
markonix
A sprawdź jeszcze w kontrolerze
  1. var_dump($this->input->post('city'))
?
Może błąd jest po stronie HTML? Źle zamknięty formularz, nadpisany input.
Wątpię aby występował bug, który traci elementy tablicy POST.
in5ane
Prawdopodobnie wiem, co już jest za problem. Naprowadziłeś mnie.

Powiedzcie mi, jak mogę zrobić, że treść z danego div'a nie była brana pod uwagę.
Przykład:
  1. <form ...>
  2. <div id="1" style="display: block;">input, form itp...</div>
  3. <div id="2" style="display: none;">input, gdzie niektóre mogą powtórzyć się w powyższym div'ie</div>
  4. <submit>
  5. </form>

Nie chce mi się tłumaczyć, czemu tak mam, więc po krótce, powiem tylko, że JS decyduje po wybraniu pewnej akcji na stronie, który DIV ma być block (default), a który none (niewidoczny). Po prostu są troszkę różne formularze w zależności od wybranej akcji. Ale czy jest możliwość, że jak div jest none, żeby nie brało pod uwagę inputów?
markonix
W JS nadaj wszystkim podrzędnym inputom dla tego DIVa display:none.
Nie pamiętam czy to tak działa, ale jeśli nie to wtedy możesz np. dodać jakiś przedrostek do name albo poczekać na jakąś lepszą radę smile.gif
szok
Ale to czy ty dasz display:none na diva w którym masz Inputy od formularza nie ukryją wartości POST które są przesyłane.
Inputy są w formie i są wysyłane, pewnie masz drugie pole City które nadpisuje ci wartość pierwszego.

Albo w locie będzie usuwał te inputy przed wysłaniem formularza, albo dodaj im jakiś prefix.
in5ane
Tak, tak. Ja już doszedłem, że to jest problem. Jednakże miałbym już za duży bałagan. Po prostu podzieliłem na osobne pliki formularze i wczytuję odpowiedni plik. Dziękuję za zainteresowane. Pozdrawiam ;-)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.