2017-01-19 77 views
0

我有一個基於codeigniter框架的網站。我的索引頁上有一個表格,還有一些通過我的數據庫進行的航班價格。如何驗證codeigniter中的表單

這裏是我的形式:

<?php echo validation_errors(); ?> 

<form action="<?php echo base_url() ?>detail/travel" method="post"> 

<input type="text" name="departure"> 
<input type="text" name="destination"> 
<input type="text" name="name"> 
<input type="text" name="cell"> 

</form> 

所以我的問題是,當用戶沒有填滿整個表格並提交按鈕,它進入的「旅行」(函數,我在我的控制器對細節)並且由於錯誤而顯示0結果。我希望該用戶保留在我的索引頁上,並提供所有詳細信息,直到他正確填寫表單並在我的索引頁上顯示錯誤(如果他錯過了我的表單的任何字段)。

這裏是我的功能「旅行」,我有我的控制器(詳細):

function search_travel(){ 
       if($_POST){ 

        $config = array(
        array(
        'field'=>'departure', 
        'label'=>'departure', 
        'rules'=>'trim|required|alpha' 
        ), 
        array(
        'field'=>'destination', 
        'label'=>'destination', 
        'rules'=>'trim|required|alpha' 
        ), 
        array(
        'field'=>'name', 
        'label'=>'name', 
        'rules'=>'trim|required|alpha' 
        ), 
        array(
        'field'=>'cell', 
        'label'=>'cell no', 
        'rules'=>'trim|required|regex_match[/^[0-13]+$/]' 
        ) 
       ); 
      $this->load->library('form_validation'); 
      $this->load->helper(array('form', 'url')); 
      $this->form_validation->set_rules($config); 
      if($this->form_validation->run() == FALSE){ 
       $data['errors']= validation_errors(); 
       } 
      else{  
      $destination= $this->input->post('destination'); 
      $this->email->send(); 
      $data['var']= $this->Travel->search_travel($destination); 
      $this->load->view('details',$data) 
       } 
      } 
     } 

和我的索引功能是:

function index(){ 
     $data['fares']= $this->Travel->all_fares(); 
     $this->load->view('index', $data); 
    } 

回答

0

您需要重定向到舊的頁面和打印鑑於頁面錯誤

<?php echo form_error('departure'); ?> 

(在控制器中瀏覽打印爲每個輸入字段及以下)

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

     redirect('method name that loads form'); 
     } 
+0

窗體是在索引文件所以爲了保持索引頁上的錯誤,我只是使用重定向(base_url())? –

+0

檢查你是否得到與它一起顯示的錯誤 – Learner

+0

我在編寫<?php echo $ this-> session-> flashdata('errors');?>時出現錯誤,顯示所有錯誤但我想顯示在每個輸入字段下。我該怎麼辦??? –