![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 3 Dołączył: 12.03.2011 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
Jak ustwawić regułe w form_validation żeby w własnej funckji walidacji mieć dostęp do danych z dwóch pól jednocześnie?
Jak dodam do drugiej reguły 'callback_checkuser' to 'checkuser' wywoływane jest dwa razy po jenym parametrze,ja potrzebuje jednego wywołania z dwoma parametrami. edit Mogłbym ładować w metodzie 'checkuser' dane drugiego pola bezpośrednio z input ale wydaje mi się to jakoś mało eleganckie. Ten post edytował acidm 11.03.2013, 16:09:14 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 371 Pomógł: 30 Dołączył: 14.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Wg mojej wiedzy(mogę się mylić oczywiście) nie da się zrobić tak jak chcesz, dlatego że jako callback podajesz jedynie nazwę funkcji, bez parametrów. Możesz utworzyć drugą metodę dla callback. Nic nie stoi na przeszkodzie by utworzyć dodatkową metodę, jako parametry podać login i hasło i sprawdzasz co chcesz. Później sprawdzasz obok form_validation także tą drugą metodę.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Własne callback mogą przyjmować argumenty przez nawias kwadratowy [] i można bym tam na upartego wsadzić drugą, pożądaną wartość.
Druga opcja to kontroler + metoda sprawdzająca, tu nie ma zbyt dużo ograniczeń. Trzeba to walidacja w modelu i zwrócenie dodatkowych errorów. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 3 Dołączył: 12.03.2011 Skąd: Opole Ostrzeżenie: (0%) ![]() ![]() |
Ale ja je potrzebuje jednocześnie, w jednej metodzie .Na razie robię to tak ze mój callback dopisuje do drugiej reguły więc metoda ta jest wywoływana gdy warunki pierwszej reguły są spełnione ,spełnione są warunki drugiej reguły(te przed callback).W samej metodzie callbackowej jeden parametr mam , drugi pobieram poprzez $this->input->post() , choć wygląda to trochę nieelegancko.
W zasadzie operację sprawdzania użytkownika i hasła w bazie mógłbym zrobić później ale jak przekazać wiadomość błędu do formularza skoro '$this->form_validation->set_message()' przypożądkowana jest do reguły. Własne callback mogą przyjmować argumenty przez nawias kwadratowy [] i można bym tam na upartego wsadzić drugą, pożądaną wartość. Możesz zademonstrować jakoś? Edit Już nie trzeba obczaiłem o co chodzi:) Ten post edytował acidm 11.03.2013, 21:53:35 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 148 Pomógł: 14 Dołączył: 23.02.2013 Ostrzeżenie: (0%) ![]() ![]() |
Ja to zawsze robiłem przez zrobienie własnej klasy MY_Form_validation i tam metody przyjmującej dwa parematry, np:
Kod class MY_Form_validation extends CI_Form_validation { function __construct() { parent::__construct(); } function date_later($date, $datepoint) { $CI =& get_instance(); $CI->form_validation->set_message('date_later', 'Data zakończenia nie może być wcześniejsza od '.$datepoint.'.'); $exploded = explode('/', $date); if ( count($exploded) == 3 ) list($d1, $m1, $y1) = $exploded; else return false; $exploded = explode('/', $datepoint); if ( count($exploded) == 3 ) list($d2, $m2, $y2) = $exploded; else return false; $time1 = mktime(0, 0, 0, $m1, $d1, $y1); $time2 = mktime(0, 0, 0, $m2, $d2, $y2); if ( $time1 < $time2 ) return false; else return true; } } W kontrolerze przekazuje drugi parametr z input->post(): Kod if ( $this->input->post('pollStop') ) $this->form_validation->set_rules( 'pollStop', 'koniec ankiety', 'trim|valid_date|date_later['.$this->input->post('pollStart').']' ); |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:56 |