2016-11-19 3 views
0

を示さないが私のコントローラコードです:ここでは私はCodeIgniterの中でプロジェクトを開発していますが、他の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は「あなたの郵便番号をチェックしてください」または同様のものです。

希望に役立ちます。

関連する問題