2012-04-27 55 views
0

我開始使用Ion Auth並想製作自定義登錄表單。我想知道如何在用戶點擊「提交」按鈕並驗證郵件錯誤後,在此輸入表單中保留並顯示當前用戶名?我看到這種方法在網站上使用了很多,但我找不到任何示例說明如何去做。如何在輸入表單中保留並顯示當前用戶名?

例如:在情況他沒有正確的密碼......

注意到我默認測試例如,當用戶輸入了不正確的密碼,錯誤味精彈出,當點擊提交,他當前的用戶名或電子郵件是空白的,不會以輸入形式存儲。

這裏修訂是我當前的代碼:

控制器

public function login() { 

    // Validated login form 
    $this->form_validation->set_rules('username', 'Username', 'required'); 
    $this->form_validation->set_rules('password', 'Password', 'required'); 

    // Get user input form 
    $username = $this->input->post('username', TRUE); 
    $password = $this->input->post('password', TRUE); 

    // If it can't log in 
    if ($this->form_validation->run() !== true) { 
     $data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message'); 

     $data['username'] = array( 'name'  => 'username', 
            'type'  => 'text', 
            'value'  => set_value('username')); 

     $data['password'] = array( 'name' => 'password', 
            'type' => 'password'); 

     $data['submit'] = array (  'type' => 'submit', 
            'value' => 'Login'); 

     // Display login page 
     $this->load->view('login', $data); 
    } else { 
     // User success login 
     if ($this->ion_auth->login($username, $password)) { 
      $this->session->set_flashdata('message', $this->ion_auth->messages()); 
      redirect($this->config->item('base_url'), 'refresh');    
     } else { 
      // Display error 
      $this->session->set_flashdata('message', $this->ion_auth->set_error('Invalid username or password.')); 

      redirect('auth/login', 'refresh'); 
     } 
    } 
} 

查看

<div id='login_form'> 
<?php echo form_open("auth/login");?> 
    <p><?php echo form_input($username);?></p> 
    <p><?php echo form_password($password);?></p> 

    <div id="message"><?php echo $message;?></div> 
    <p id="submit"><?php echo form_submit($submit);?></p> 
<?php echo form_close();?> 

+0

不使用'$這個 - > form_validation-> SET_VALUE( '用戶名')'只是用'SET_VALUE( '用戶名' )' – Jakub 2012-04-27 17:29:40

+0

我做了你所說的,但它仍然無法正常工作。當我點擊Submit時,它不會以輸入的形式顯示當前的用戶名。我不知道什麼是錯的... – qpixo 2012-04-28 01:35:26

回答

0

你會使用set_value()保留值,如果form_validation是假的,笨將保留價值。

例子:

<input type="text" 
     name="quantity" 
     value="<?php echo set_value('quantity', '0'); ?>" 
     size="50" /> 

參考:http://codeigniter.com/user_guide/helpers/form_helper.html

+0

它不起作用,它仍然給我默認是'用戶名'我使用form_input($ username),而不是定義了一個關聯數組...任何想法? – qpixo 2012-04-27 15:42:46

+0

它的工作原理..你做得不對:'set_value('name of element')'如果你有一個在你的關聯數組中定義的ID,它是不一樣的,你需要一個名字。驗證它們是否匹配並且可以工作,請參閱我已包含的CI參考並查看您的代碼。 – Jakub 2012-04-27 16:46:43

+0

好的,我刪除了定義的ID,但保留Name是'用戶名'。它仍然沒有工作。這很奇怪! – qpixo 2012-04-27 17:13:30

相關問題