大家好,我让我的代码更简单,只是为了显示错误信息,但现在仍然显示。
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);
}
}
}
答案 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警察会为您而来。