2012-11-26 95 views
0

對於CodeIgniter來說還是很新的,並試圖執行以下操作。我可能會做這個錯誤的,任何方向,非常感謝。CodeIgniter控制器 - 將變量傳遞給索引()

我有一個函數,在提交登錄表單時調用validate_creds。如果表單登錄成功,如果不成功,我想設置一個$error_msg並重新加載表單。 validate_creds()似乎驗證正確,但正如你可以在else聲明中看到的,我想重新加載index(),傳遞$error_msg在窗體頂部顯示消息。

public function index($error_msg = '') 
     { 
      //data 
      $data['login'] = "Logged In"; 

      if($error_msg !== '') { 
       $data['error_msg'] = $error_msg; 
      } 

      //view 
      $this->load->view('templates/login/login_header',$data); 
      $this->load->view('login/login_form', $data); 
      $this->load->view('templates/login/login_footer',$data); 
     } 


     public function validate_creds() 
        { 
         $this->load->model('user_model'); 
         $query = $this->user_model->validate(); 
         if($query)//if the users creds have been validated... 
         { 
         $data = array(
          'username' => $this->input->post('username'), 
          'is_logged_in' => true 
         ); 

         $this->session->set_userdata($data); 
         redirect('gallery'); 
        } 

        else 
        { 
         $error_msg = "Your username or password is not correct."; 
         $this->index($error_msg); 
        } 
       } 

形成消息

<?php if($error_msg != ''): ?> 
    <div class="alert alert-error"> 
    <?php echo $error_msg; ?> 
    </div> 
<?php endif; ?> 

什麼目前正在發生的事情是$error_msg顯示了所有的時間。

+0

您的索引功能沒有正確關閉,這是複製/粘貼錯誤嗎? – GrayB

+0

謝謝,是複製/粘貼 - 編輯的問題。 – Bungdaddy

回答

0

我希望這只是它是如何與複製粘貼出來,因爲這段代碼很難閱讀。請檢查php codesniffer並將其作爲行業標準,查看一些關於php代碼格式的zend文檔。

所以你的邏輯需要將錯誤信息注入到索引函數中(我假設你的行爲只是沒有被標記爲這樣),如果它沒有被注入,它不會聲明錯誤信息,因爲它是沒有注射。

我會看$ this-> user_model-> validate();以確保正確處理http請求(post)。

+0

謝謝你,菜鳥的錯誤。 – Bungdaddy

+0

「if($ query)」是這裏的關鍵字,因爲錯誤消息var被設置的唯一方式是如果沒有滿足該條件,並且我假設來自$ this-> user_model-> validate的$ query var ();被封裝在一些東西中,以檢查用戶是否通過http發佈了表單。如果不是,那麼它永遠不會滿足條件,並且總是設置錯誤,因爲甚至不需要發佈表單來觸發邏輯。 – jsteinmann

相關問題