2012-04-27 58 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

相关问题