2016-09-16 119 views
0

不明白。 我必須驗證基本表單。即時通訊使用CI form_validation庫,表單驗證規則設置爲「必需」...如果表單驗證失敗,只需要在登錄表單中回顯驗證錯誤。我默認使用<?php echo validation_errors(); ?>助手是自動加載的。表單功能是好的它的工作原理應該如何,只有問題是框架不顯示錯誤信息如果不填寫必填字段?無法顯示Codeigniter驗證錯誤

login_form.php - 查看

<?php echo validation_errors(); ?> 

<?php echo form_input('email' , 'email'); ?> <br> 
<?php echo form_input('password' , 'password'); ?> <br> 
<?php echo form_submit('submit' , 'submit'); ?> 

的login.php - 控制器

<?php 
Class Login extends CI_Controller { 

    function index() { 
    $data ['content'] = "login_form"; 
    $this->load->view("template", $data); 
    } 

    function validate() { 
    $this->load->library("form_validation"); 


    $this->form_validation->set_rules('email' , 'email' , 'trim|xss_clean|required'); 
    $this->form_validation->set_rules('password' , 'password' , 'md5|trim|required'); 

    if($this->form_validation->run() == FALSE) { 
     redirect('login/index'); 
    } 
    else { 
     redirect("user/profile"); 
    } 
    } 

} 
?> 
+0

能否請您粘貼您的控制器和視圖 – Farhan

+0

重定向(「登錄/指數」);不要使用重定向加載您的視圖 – Farhan

+0

這裏是完整的代碼。 – asdasdasdasdasdasdasdasdasdasd

回答

1

你爲什麼不使用代碼控制器這樣的希望會幫助你剛纔設置表單動作到login.php login.php - CONTROLLER

function index() { 
    $data ['content'] = "login_form"; 
    $this->load->library("form_validation"); 
    $this->form_validation->set_rules('email' , 'email' , 'trim|xss_clean|required'); 
    $this->form_validation->set_rules('password' , 'password' , 'md5|trim|required'); 
    if($this->form_validation->run() == FALSE) { 
      $this->load->view("template", $data); 
    } 
    else { 
     redirect("user/profile"); 
    } 
} 

login_form.php - 查看

<?php echo validation_errors(); ?> 

<?php echo form_input('email' , 'email'); ?> <br> 
<?php echo form_input('password' , 'password'); ?> <br> 
<?php echo form_submit('submit' , 'submit'); ?> 
+0

@goran上看到任何form_open(),請注意,不是重定向,而是重新加載頁面視圖。當您重定向當前頁面中的所有數據時將丟失 - 包括form_validation類及其所有數據。仔細查看[表單驗證文檔](http://www.codeigniter.com/user_guide/libraries/form_validation.html)示例。你會看到它以同樣的方式完成。以上是正確的答案。 – DFriend

+0

@Farhan通常只在運行部分是'=='而不是'===' – user4419336

0
if($this->form_validation->run() == FALSE) { 
    redirect('login/index'); 
} 

不重定向,將不提供別的錯誤。取而代之的是保持

if($this->form_validation->run() == FALSE) { 
    $data ['content'] = "login_form"; 
    $this->load->view("template", $data); 
}  

查看以下鏈接瞭解詳情:
Form Validation : CodeIgniter User Guide