2014-01-13 4 views
0

Я использую codeigniter. Ниже приведен код моей страницы регистрации.

Контроллерданные сохранения, введенные пользователем в форме

function register() 
    { 
     $this->load->library('form_validation'); 
     $this->form_validation->set_rules('first_name', 'First Name',  'trim|required'); 
      $this->form_validation->set_rules('last_name', 'Last Name', 'trim|required'); 
      $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[4]|is_unique[users.username]'); 
      $this->form_validation->set_rules('user_email', 'Email', 'trim|required|valid_email|is_unique[users.user_email]'); 
      $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|max_length[32]'); 
      $this->form_validation->set_rules('ans_1', 'Security answer 1', 'required');  
       $this->form_validation->set_rules('ans_2', 'Security answer 2',  'required'); 
      if($this->form_validation->run() == FALSE) { 
      //not validated - reload the view and display errors 
       $this->load->database(); 

      $this->load->model('user'); 
      $data['ques'] = $this->user->get_que(); 
      $this->load->view('register',$data); 

      } 
      else { 
      $this->load->database(); 

      $this->load->model('user'); 
      //create user 
      $this->user->create_user(); 
      $this->thank(); 
      } 
    } 



Посмотреть

<!DOCTYPE html> 
<html> 
<head> 
    <title> Login</title> 
    <link rel="stylesheet" href="http://localhost/cinema/assets/css/form.css"> 

</head> 
<body> 




      <form action="http://localhost/cinema/login/register" method="post" accept-charset="utf-8" class="username register" > 
      <h3>User Registration form:</h3> 
      <p><label for="first_name">First Name</label> 
       <input type="text" name="first_name" /></p> 
      <p><label for="last_name">Last Name</label> 
       <input type="text" name="last_name" /></p> 

      <p><label for="username">Username</label> 
       <input type="text" name="username" /></p> 

      <p><label for="user_email">Email</label> 
       <input type="text" name="user_email" /></p> 

    <p><label for="password">Password</label> 
      <input type="password" name="password" /></p> 
     <br><font size='4'>Select security question 1:</font> 
      <select name="que_1"> 
     <?php 
      foreach($ques as $que) 
     { 
      echo '<option value="'.$que->que_ID.'">'.$que->que.'</option>'; 
     } 
     ?> 
     </select><br><br> 
     <p><label for="ans_1">Answer:</label> 
       <input type="text" name="ans_1" /></p> 
     <br><font size='4'>Select security question 2:</font> 
      <select name="que_2"> 
     <?php 
      foreach($ques as $que) 
     { 
      echo '<option value="'.$que->que_ID.'">'.$que->que.'</option>'; 
     } 
     ?> 
     </select><br><br> 
     <p><label for="ans_2">Answer:</label> 
       <input type="text" name="ans_2" /></p> 

     <input type="submit" name="btnSubmit" class="styled-button-8" style="float:right; margin-right:300px; margin-top:-10px;" value="Sign Up!" 
      /> 
      <font color="red" size="4"><b> 
     <?php echo validation_errors(); ?></b></font> 
      </form> 
</body> 
</html> 

    <br> 

Моя проблема заключается в том, что в случае, если пользователь заполняет недостоверные данные и нажимает на кнопку Регистрация, страница обновляется и отображаются ошибки проверки, но данные, введенные пользователем, не остаются там. Он должен снова заполнить всю форму. Я хочу, чтобы пользовательские данные сохранялись и отображались в этом случае. Спасибо заранее. :)

ответ

0

Для этого нужно set_value()

Для ввода fileds

<input type="text" name="last_name" value='<?php echo set_value('last_name')?>'/> 

Это значение получит значение $ _POST и печать после неудачной проверки. В качестве значения по умолчанию используется второй параметр.

<?php echo set_value('last_name','John')?> 

Прочитать Form Helper Класс.

+0

большое спасибо! это сработало. как насчет вариантов выбора? Они снова освежаются. – user3142334

0

Вы можете попробовать вот так. Вы можете сохранить сеанс для отображения данных полей пользователя во время проверки проверки. Я добавил образец с сеансом в вашей форме.

Ваш взгляд:

<?php session_start(); ?> 
<form action="http://localhost/cinema/login/register" method="post" accept-charset="utf-8" class="username register" > 
    <h3>User Registration form:</h3> 
    <p><label for="first_name">First Name</label> 
     <input type="text" name="first_name" value="<?php echo $_SESSION['first_name']; ?>" /></p> 
    <font color="red" size="4"><b> 
     <?php echo validation_errors(); ?></b></font> 
</form> 

Ваш контроллер:

function register() { 
    $this->load->library('form_validation'); 
    $firstName = $this->form_validation->set_rules('first_name', 'First Name', 'trim|required'); 
    $this->session->set_userdata('first_name', $firstName); 
    if ($this->form_validation->run() == FALSE) { 
     //redirect to register page 
    } else { 
     //register user details 
     $this->session->unset_userdata('first_name'); 
    } 
0

Лучшее решение: использовать почтовые данные

<input type="text" name="last_name" value='<?php echo $this->input->post('last_name')?>'/> 

При использовании set_value(), вы должны послать это поле для оценки даже не требуется. Но для Post вы не хотите выполнять какую-либо дополнительную работу.

0

В контроллере помещается массив данных и передается введенным пользователем значениям. Затем, если ошибки проверки формы передают эти данные в представление.

В представлении используется метод CI set_value() для отображения предыдущих введенных значений.

Смежные вопросы