Czy można mieć kod JavaScript w kontrolerze? Próbuję mieć alert, jeśli login nie powiódł się,

Oto warunek w moim kontrolera:

public function login2()
{
    if(!empty($_POST['btn_login'])){
        $session_login = $this->inventory_model->select_login($this->input->post());
        if($session_login){
            $this->session->set_userdata('login_session', 
                array(
                    'Username' => $session_login->Username,
                    'Password' => $session_login->Password,
                    'UserType' => $session_login->UserType
                )
            );
            redirect('inventorysys_controller/homepage');
        }
        else{
            echo "Invalid Username/Password!";
        }
    }
}

Próbuję umieścić javascript w innym, więc to możliwe, że faceci?

Oto mój widok na wypadek, gdy potrzebujesz odniesienia:

<form action="login2" method="POST" id="log_form" name="log_form" style="margin-left: auto; margin-right: auto;">
    <div class="modal-body">
       <div class="container">     
          <div id="nav_log1">
            Username: <input type="text" id="txt_user1" name="txt_user1" style="color: black;"/>
            Password: <input type="password" id="txt_pass1" name="txt_pass1" style="color: black;"/>
          </div>
        </div> <!-- /container -->
    <div class="modal-footer" style="padding: 20px; margin-top: 20px;">
        <button type="submit" value="login" id="btn_login" class="btn btn-primary btn-sm" name="btn_login">Sign-In</button>
        <button class="btn btn-warning btn-sm" data-dismiss="modal">Cancel</button>
        <!--<button id="close_me" class="btn btn-default" data-dismiss="modal">Close</button>-->
    </div>
    </div>
 </form>

Twoja pomoc będzie naprawdę doceniona. :)

1
eljon_i3 13 sierpień 2014, 11:26

3 odpowiedzi

Najlepsza odpowiedź

Zamiast używać alertów, jeśli używasz Clesigiter, spróbuj Flashdata.

Składnia:

Aby dodać FlashData:

 $this->session->set_flashdata('item', 'value');

Aby przeczytać zmienną FlashData:

 $this->session->flashdata('item');

Zgodnie z kodem:

Kontroler :

public function login2()
{
if(!empty($_POST['btn_login'])){
    $session_login = $this->inventory_model->select_login($this->input->post());
    if($session_login){
        $this->session->set_userdata('login_session', 
            array(
                'Username' => $session_login->Username,
                'Password' => $session_login->Password,
                'UserType' => $session_login->UserType
            )
        );
        redirect('inventorysys_controller/homepage');
    }
    else{
        //echo "Invalid Username/Password!";
         $this->session->set_flashdata('msg', 'Invalid Username/Password!');
        redirect('inventorysys_controller/login_page');
    }
}
}

Widok:

<form action="login2" method="POST" id="log_form" name="log_form" style="margin-left: auto; margin-right: auto;">
    <div>
            <?php echo $this->session->flashdata('msg');?>
    </div>
    <div class="modal-body">
       <div class="container">     
          <div id="nav_log1">
            Username: <input type="text" id="txt_user1" name="txt_user1" style="color: black;"/>
            Password: <input type="password" id="txt_pass1" name="txt_pass1" style="color: black;"/>
          </div>
        </div> <!-- /container -->
    <div class="modal-footer" style="padding: 20px; margin-top: 20px;">
        <button type="submit" value="login" id="btn_login" class="btn btn-primary btn-sm" name="btn_login">Sign-In</button>
        <button class="btn btn-warning btn-sm" data-dismiss="modal">Cancel</button>
        <!--<button id="close_me" class="btn btn-default" data-dismiss="modal">Close</button>-->
    </div>
    </div>
 </form>
1
AkshayP 13 sierpień 2014, 07:49

Najlepszy i najbardziej przyjazny sposób przyjazny dla Codeginitera / MVC byłoby przypisanie komunikatu o błędzie do zmiennej, a następnie powiadomić go w widoku ...

public function login2(){
    $data = array();
    if(!empty($_POST['btn_login'])){
        $session_login = $this->inventory_model->select_login($this->input->post());
        if($session_login){
            $this->session->set_userdata('login_session', array('Username' => $session_login->Username,
                                                                'Password' => $session_login->Password,
                                                                'UserType' => $session_login->UserType));
                                                            redirect('inventorysys_controller/homepage');
        }
        else{
            // echo "Invalid Username/Password!";
            $data['error'] = 'Invalid Username/Password!';
        }
    }

    $this->load->view('your-view', $data);
}

Twoim zdaniem:

if (isset($error) && !empty($error)) {
    echo "<script>alert('" . $error . "')</script>";
}
2
Jonathon 13 sierpień 2014, 07:41

Jeśli chcesz wyświetlić JavaScript z PHP, wykonaj następujące czynności:

echo "<script>alert('login failed');</script>";

Lub korzystniej, zbuduj swoją aplikację w spokojny sposób, oznacza to, że użyj żądań AJAX, aby pobrać dane w prawdopodobnie JSON Format z serwera (w tym przypadku kontrolera) :)

Mam nadzieję, że pomoże, w przypadku jakichkolwiek pytań, jestem tutaj!

0
maht0rz 13 sierpień 2014, 07:31