如何在codeigniter中验证表单

时间:2017-01-19 11:55:18

标签: php forms codeigniter codeigniter-3

我有一个基于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>

所以我的问题是当用户没有填写整个表单并提交按钮时,它会进入&#34; travel&#34;我在我的控制器(详细信息)中制作并显示0结果,因为错误。我希望该用户保留在我的索引页面上,其中包含所有详细信息,直到他正确填写表单并在我的索引页面上显示错误,如果他错过了我的表单中的任何字段。

这是我的功能&#34;旅行&#34;我在我的控制器中(细节):

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);
    }

1 个答案:

答案 0 :(得分:0)

您需要在视图页面中重定向到旧页面并打印错误

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

(在控制器中的每个输入字段和下方打印此视图)

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

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