在codeigniter中显示带有值的页面,并显示错误消息

时间:2013-01-07 00:09:45

标签: codeigniter

大家好,我让我的代码更简单,只是为了显示错误信息,但现在仍然显示。

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

}

}

1 个答案:

答案 0 :(得分: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;打印出所有错误。

注意显然,您必须确保该属性始终存在或检查其存在以避免您自己的错误。我还为你的错误添加了换行符,以便在批量打印时看起来有点整洁。如果有多个。

SECOND NOTE 你似乎在我的代码中放了很多东西,我认为这是一个控制器。您应该将所有数据库内容保留在模型中,否则MVC警察会为您而来。