0

こんにちは、エラーメッセージを表示するためだけにコードを単純化しましたが、まだ表示されています。

 public function check_profile_ifexist($id)
  {

    if($this->input->post('edit')){

    $this->form_validation->set_rules('email','Email','trim|valid_email|is_unique[user_details.email]'); 
    $this->form_validation->set_rules('username','Username','trim|min_length[6]|max_length[20]|is_unique[user_details.username]|xss_clean');                $this->form_validation->set_message('is_unique',"That %s already exists!");
    $this->form_validation->set_message('max_length', 'the maximum characters for %s is 20');
    $this->form_validation->set_message('min_length', 'the minimum characters for %s is 6');

    if ($this->form_validation->run())
    {
        $this->load->model('model_user_manage');
        $em=$this->model_user_manage->update_all($id);
    }
    else
    {

     $this->view_profile($id);  
     }

}

}

4

1 に答える 1

0

すべてのエラーをエコーアウトする代わりに、すべてをプロパティに保存します。

最初に空のプロパティを開始して、それが存在することを確認します - check_profile_ifexist() メソッドの最初でこれを行うことができます:

 $this->profile_errors = '';

次に、 check_profile_ifexist() メソッド内で、エコーするのではなく、エラーをプロパティに追加するだけです。

if (MD5($username)==$pass){
    echo "username cannot be the same as password";
}

になります:

if (MD5($username)==$pass){
     $this->profile_errors .= "username cannot be the same as password\n";
}

このプロパティはすべてのメソッドで使用できるようになるため、次のように view_profile() のデータ配列に追加できます。

if(isset($this->profile_errors)){
    $data['errors'] = $this->profile_errors;
}else{
    $data['errors'] = ''; 
}

エラーはビューで $errors として利用できるため、echo $errors;すべてのエラーを出力できます。

注意明らかに、プロパティが常に存在することを確認するか、独自のエラーを回避するためにその存在を確認する必要があります。また、エラーに改行を追加して、複数の場合にまとめて印刷したときに少しきれいに見えるようにしました。

2番目の注意このコードのモデルに入れると思われるものがたくさんあるようです。これはコントローラーであると思います。おそらく、すべてのデータベースをモデルに保持する必要があります。そうしないと、MVC 警察があなたのために来ます。

于 2013-01-07T04:27:20.353 に答える