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?

1
Derfder 4 styczeń 2013, 13:01

2 odpowiedzi

Najlepsza odpowiedź

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
}
2
Francois Bourgeois 4 styczeń 2013, 15:35

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..

1
Edwin Alex 4 styczeń 2013, 13:13