2016-11-19 28 views
0

这里是我的控制器代码:我有开发笨,但表单验证错误的项目中的其他conditon没有显示出任何错误

public function onlineordercheck() 
{ 
    $this->load->library('form_validation'); 

    $this->form_validation->set_rules('postcode', 'Postcode', 
     'required|trim|integer|max_length[4]', 
     array('integer' => 'We are sorry, currently we do not provide services in your area.', 
       'max_length[4]'=>'We are sorry, currently we do not provide services in your area.')); 

    $this->form_validation->set_error_delimiters("<div class='text-danger'>","</div>"); 
    if($this->form_validation->run()) 
    { 
     $postcode= $this->input->post('postcode'); 
     $this->load->model('Common_m'); 
     $check_code=$this->Common_m->check_pincode($postcode); 
     if($check_code) 
     { 
      //Credentials valid login user 
      $this->session->set_userdata('postcode',$check_code); 
      $this->load->view('template',array('page_title'=>'pageName','middle_view'=>'schedule_pickup')); 
     } 
     else 
     { 
      //authentication failed 
      $this->load->view('template',array('page_title'=>'pageName','middle_view'=>'online_order')); 
      $this->form_validation->set_message('postcode', 'Service for this postcode is not available.'); 
     } 
    } 
    else 
    { 
     $this->load->view('template',array('page_title'=>'pageName','middle_view'=>'online_order')); 
    } 
} 

这是我的看法页:

<div class="container" style="margin:20px;"> 
    <div class=" col-sm-12 row"> 
     <div class="col-sm-12"> 
      <div class="col-sm-12 thumbnail text-center"> 
       <img alt="" class="img-responsive" src=`"<?php echo base_url(); ?>`images/imageName.jpg"> 
       <div class="caption"> 
        <?php echo form_open('COrders/onlineordercheck', [ 'class' => 'form-horizontal' ]); ?> 
        <div class="title">Postcode</div> 

        <?php echo form_input([ 'name' => 'postcode', 'placeholder' => 'Postcode' ]) ?> 
        <?php echo form_error('postcode'); ?> 

        <?php echo form_submit 
        ([ 
         'class' => 'btn btn-primary', 
         'type' => 'submit', 
         'value' => 'Check Times' 
        ]) ?><?php echo form_close(); ?> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

我有负载form_helper并在构造函数中构造验证库。当check_pincode($pincode)方法返回false那个时候set_message不工作...
什么会变成set_message显示错误。

回答

0

您正在运行表单验证后设置消息。当您运行使用设置消息时的表单验证。如果表单验证通过,则不会使用设置的消息,因为它们仅用于现场故障。

您可以使用回调来创建自己的验证测试,从而使邮政编码服务区域检查表单验证过程的一部分。这是一个值得习惯的强大过程,因为您的表单一旦掌握了它就可以从字面上做任何事情。你可以在这里阅读文档。

http://www.codeigniter.com/user_guide/libraries/form_validation.html#callbacks-your-own-validation-methods

另外,和多一点笨拙,因为你已经运行了表单验证,并检查是否岗位代码是在服务,并发现其不属于,你将需要设置一个新的页面变量,如果postcode_out_of_service为TRUE或FALSE,则发送给视图。

在您的表单上,您需要使用该变量测试来输出有关邮编问题的用户邮件,该邮件未被提供服务。

我在这里要做的是重定向到一个新页面,该页面描述用户如果不在可用的邮政编码中可以执行的操作。你甚至可以把这个空间卖给另一家公司,这样你就可以说“尽管我们无法为该地区服务,但这个网站可以......”。

从用户角度来看,登记的第一阶段应该是邮政编码检查,否则你完全浪费了他们的时间。因此,第1阶段是“检查您的邮编”或类似的。

希望有所帮助。