2016-06-27 18 views
1

問題がありますが、codeigniterがエラーメッセージを表示していません。Codeigniterフォームの検証でエラーが表示されない

$this->form_validation->run()var_dumpを実行すると、すべてが完了した場合はtrueを返し、完了していない場合はfalseを返します。ここで

はコードです:

コントローラ

defined('BASEPATH') OR exit('No direct script access allowed'); 

class Logon extends CI_Controller { 
public function __construct() { 
     parent::__construct(); 
     $this->load->model('logon_model', 'logon'); 
     } 

public function autenthicate() { 
     $this->form_validation->set_rules('usuario', 'Usuario', 'required'); 
     $this->form_validation->set_rules('senha', 'Senha', 'required'); 

     if ($this->form_validation->run() == TRUE): 
      #Array with data 
      $data = elements(array('user', 'password'), $this->input->post()); 
      $data['password'] = md5($data['password']); 

      #Send data to model 
      if ($this->logon->do_login($data)->result()): 

       $data = $this->logon->do_login($data)->result(); 

       $user_data = array(
        'id' => $data['id'], 
        'name' => $data['name'], 
        'logged' => TRUE 
       ); 

       $this->session->set_userdata($user_data); 
       redirect('sales'); 

       $this->session->set_flashdata('loginerror', 'Login failed! User or password is invalid.'); 
       redirect('logon'); 
      endif; 
     else: 
      $data = array(
       'title' => 'Logon', 
       'screen' => 'index', 
      ); 

      $this->load->view('index_view', $dados); 
     endif; 
    } 

} 

ビュー

<?php 
        echo form_open('logon/autenthicate'); 
        echo '<div class="form-group">'; 
        echo form_label("User"); 
        echo form_input(array('name' => 'user', 'class' => 'form-control')); 
        echo '</div>'; 

        echo '<div class="form-group">'; 
        echo form_label("passwor"); 
        echo form_password(array('name' => 'password', 'class' => 'form-control')); 
        echo '</div>'; 

        echo '<div class="form-group">'; 
        echo form_submit('logon', 'Logon', 'class="btn btn-default btn-block"'); 
        echo '</div>'; 

        #Show a alert div with validation errors 
        echo validation_errors('<div class="alert alert-danger alert-dismissible" role="alert"> 
    <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>', '</div>'); 
        echo form_close(); 
        ?> 

は、どうやらそれは大丈夫だが、私はエラーを見つけることができません。フォームが完了して登録ユーザーになると、ログイン画面に戻っていないにもかかわらず、エラーを表示せずにホームページにリダイレクトされます。

私を助けることができますか? (ベストプラクティス)へ

+0

なぜ2番目のIF文内に2つのリダイレクトがありますか?また、最後のload-> view( 'index_view'、$ dados);.それは '$ dados'ではなく' $ data'でしょうか? – KFE

+0

はい、$ dadosではなく$ dataです。 –

答えて

2

変更この

if ($this->form_validation->run() == TRUE) 

この

if ($this->form_validation->run() == FALSE) 

あなたはまだ何を検証するためにフォーム検証クラスに語っていないので、デフォルトでFALSE(真偽値)を返します。 The run()メソッドは正常にルールを適用しなかった場合にTRUEを返します。

Check Why


この

echo validation_errors('<div class="alert alert-danger alert-dismissible" role="alert"> 
    <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>', '</div>'); 
を削除コントローラに

$this->form_validation->set_error_delimiters('<div class="alert alert-danger alert-dismissible" role="alert"> 
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>', '</div>'); 

これを追加

Check Why


それぞれの入力フィールド

echo form_error('usuario'); 
echo form_error('senha'); 

それとも

<?php echo validation_errors(); ?> 

Check Why


を追加するには、以下のフォームでこれを追加

CodeIgniter Form Validation Example

+1

ありがとうございました!今それは完璧に働いています。 –

関連する問題