Mam kontroler auth i są dwie metody logowania i rejestracji.
I działa ładnie.
Jednak potrzebuję innej funkcji o nazwie login_and_register, która będzie miała warunek if określający, która część zostanie wykonana. Czy część logowania (w zasadzie kod z metody logowania) lub część rejestracyjna (kod z metody rejestracji).
Warunkiem if powinno być sprawdzenie, który przycisk przesyłania został kliknięty.
Ale oto problem.
Potrzebuję form_open dla obu formularzy (logowania i rejestracji) tak:
<?php echo form_open('auth/login_and_register'); ?>
I nie da się tego zmienić m.in. auth/login_and_register_log lub auth/login_and_register_reg lub auth/login_and_register/log lub auth/login_and_register/reg itp.
Formularze logowania i rejestracji są w tym samym widoku i po naciśnięciu przycisku submit wykonywana jest funkcja login_and_register w kontrolerze auth.
Myślałem, że warunek if mogę oprzeć na nazwie wartości submit, ponieważ dla formularza logowania nazywa się on submitlog, a dla formularza rejestracyjnego nazywa się submitreg.
Więc może coś takiego:
if( isset($this->form_validation->set_value('submitlog')) ) {
//code for login part
}
elseif ( isset($this->form_validation->set_value('submitreg')) ) {
//code for registration part
}
else {
//code for redirect to homepage
}
Ale to nie działa. Jakiś pomysł dlaczego?
2 odpowiedzi
Dobrym pomysłem jest zapytanie o nazwy przycisków przesyłania. Oto fragment kodu, który działa:
if ($this->input->post("submitlog") !== false) {
//code for login part
} elseif ($this->input->post("submitreg") !== false) {
//code for registration part
} else {
//code for redirect
}
Zamiast tego możesz zachować ukryte pole w obu formularzach o wartości odpowiadającej nazwie formularza. W kontrolerze możesz sprawdzić wartość tego pola i określić, który formularz jest przesyłany. Następnie możesz przekierować do wymaganej funkcji..
Podobne pytania
Nowe pytania
codeigniter
CodeIgniter to Application Development Framework - zestaw narzędzi - dla osób, które tworzą strony internetowe przy użyciu PHP. Stworzony przez EllisLab, wspierany przez BCIT, jest teraz projektem Fundacji CodeIgniter. Struktura implementuje zmodyfikowaną wersję wzorca projektowego Model-View-Controller. Użyj tego tagu w przypadku pytań dotyczących klas, metod, funkcji, składni i użycia CodeIgniter. Istnieją dwie główne wersje: 3.x i 4.x, obsługujące różne wymagania systemowe