2017-02-22 9 views
1

この登録フォームはうまく機能しています。しかし、入力をせずに送信ボタンをクリックしようとすると、警告が表示されずにページがリロードされました。ここに私のコントローラです:Codeigniterで検証フォームが機能しない

<?php 

class Signup extends CI_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->helper(array('form','url')); 
     $this->load->library(array('session','form_validation')); 
     $this->load->database(); 
     $this->load->model('user_model'); 
    } 

    function index() 
    { 
     //set form validation rules 
     $this->form_validation->set_rules('fname','Full Name', 'trim|required|alpha|min_length[3]|max_length[30]|xss_clean'); 
     $this->form_validation->set_rules('username','Last Name', 'trim|required|alpha|min_length[3]|max_length[30]|xss_clean'); 
     $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|is_unique[user.user_email]'); 
     $this->form_validation->set_rules('password','Password','trim|required|md5'); 

     //submit 
     if($this->form_validation->run() == FALSE) 
     { //FAILS 
      $this->load->library('../controllers/page'); 
      $this->page->register(); 
     } else 
     { 
      //insert user details into db 
      $data = array(
       'user_nama' => $this->input->post('fname'), 
       'username' => $this->input->post('username'), 
       'user_email' => $this->input->post('email'), 
       'user_phone' => $this->input->post('phone'), 
       'user_password' => $this->input->post('password'), 
       'address' => $this->input->post('address'), 
       'sex' => $this->input->post('sex') 
      ); 

      if($this->user_model->insert_user($data)) 
      { 
       $this->session->set_flashdata('msg','<div class="alert alert-success text-center">You are sucessfully Registered! Please login to access your profile.</div>'); 
       redirect('page/success'); 
      } 
      else 
      { 
       //error 
       $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">Oops! Error occured. Please try again later.</div>'); 
       redirect('signup/index'); 
      } 
     } 
    } 
} 

?> 

私は検証が失敗した場合は、別のコントローラ(page.php)から(それが唯一のheadercontent、およびfooterの読み込みを行う場合)register()メソッドを呼び出すことで、間違っていた知っています。しかし、私はこれを行う別の方法を考えることができませんでした。別の方法を見つけてユーザー名が表示されるように助けてくれますか?ありがとうございました。検証はあなただけ戻って同じ機能にリダイレクトし、そのレジスタ機能の呼び出しを削除し、代わりにredirect('signup/index');を呼び出す必要が失敗した場合

  <?php 
      $fattr = array('class' => 'form-signin'); 
      echo form_open('/signup/index', $fattr); ?> 
      <div class="form-group form-inline input-sm"> 
       <label for="name">Nama Lengkap<span style="padding-left: 90px;">:</span></label> 
       <input class="form-control" name="fname" placeholder="Your Name" type="text" value="<?php echo set_value('fname'); ?>" /> 
       <span class="text-danger"><?php echo form_error('fname'); ?></span> 
      </div> 
      <div class="form-group form-inline input-sm"> 
       <label for="username">Username<span style="padding-left: 115px;">:</span></label> 
       <input class="form-control" name="username" placeholder="Username" type="text" value="<?php echo set_value('username'); ?>" /> <!-- lname --> 
       <span class="text-danger"><?php echo form_error('username'); ?></span> 
      </div> 
      <div class="form-group form-inline input-sm"> 
       <label for="name">Password<span style="padding-left: 118px;">:</span></label> 
       <input class="form-control" name="password" placeholder="Password" type="password" /> 
       <span class="text-danger"><?php echo form_error('password'); ?></span> 
      </div> 
      <div class="form-group form-inline input-sm"> 
       <label for="name">Email<span style="padding-left: 143px;">:</span></label> 
       <input class="form-control" name="email" placeholder="Email" type="text" value="<?php echo set_value('email'); ?>" /> 
       <span class="text-danger"><?php echo form_error('email'); ?></span> 
      </div> 
      <div class="form-group form-inline input-sm"> 
       <label for="name">No. Telepon<span style="padding-left: 109px;">:</span></label> 
       <input class="form-control" name="phone" placeholder="No. Telepon" type="text" value="<?php echo set_value('phone'); ?>" /> 
       <span class="text-danger"><?php echo form_error('phone'); ?></span> 
      </div> 
      <div class="form-group form-inline input-sm sex"> 
       <label for="sex">Jenis Kelamin<span style="padding-left: 95px;">:</span></label> 
       <select value="<?php echo set_value('sex'); ?>"> 
        <option value="male">Laki-laki</option> 
        <option value="female">Perempuan</option> 
       </select> 
      </div> 
      <div class="form-group form-inline input-sm alamat"> 
       <label for="alamat">Alamat<span style="padding-left: 135px;">:</span></label> 
       <textarea id="alamat" name="alamat" rows="5" cols="29" type="text" value="<?php echo set_value('address'); ?>"/></textarea> 
      </div> 

答えて

0

は、追加情報については、ここでのビューです。

は、その後、あなたのビューであなただけの関数CodeIgniterのをエコーする必要があり、特にこの目的のためにあります。

echo validation_errors('<span class="error">, '</span>'); 

はおそらく最高で、どこかのトップの近くに、あなたがページに好きな場所ことを置きます。

+0

私はあなたが提案したものを試しましたが、うまくいきませんでした:(まだ同じ問題があります – bnrfly

+0

あなたはそれがうまくいかなかったということを意味しますか?不良データを入れても何のエラーも表示されませんか? – Pacio

+0

はい以前と同じページをリロードするだけです – bnrfly

関連する問題