因此,我試圖在CodeIgniter(v2.1.4)中使用Form_validation庫的回調函數來檢查在創建數據庫之前,是否存在具有給定用戶名或電子郵件的用戶一位新用戶。使用CodeIgniter表單驗證回調函數的HTTP 500錯誤
login.php中(控制器)
function create_member()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[4]|callback_value_check[USERNAME]');
if($this->form_validation->run() != FALSE)
{
// Validation passed; create the new user.
$this->load->model("members_model");
if($query = $this->members_model->create_member())
{
// Load the success page view.
}
else
{
// Reload the signup page view.
}
}
else
{
// Reload the signup page view.
}
}
function _value_check($value, $column)
{
$this->load->model("members_model");
if($this->members_model->check_exist_value($column, $value))
{
$this->form_validation->set_message('value_check', '%s is already taken.');
return FALSE;
}
else
{
return TRUE;
}
}
members_model.php(型號)
function check_exist_value($column, $value)
{
$this->db->where($column, $value);
$result = $this->db->get('MEMBERS');
if($result->num_rows() > 0)
{
// A user with that unique value already exists in the database.
return TRUE;
}
else
{
// There is no user with that unique value in the database.
return FALSE;
}
}
如在代碼上方觀察,我只目前正在測試爲現有的用戶名。標準驗證消息正確顯示(即必需的,min_length等)。但是,如果我輸入一個我知道已經存在於數據庫中的值(這意味着自定義回調驗證函數應該失敗),我反而會得到HTTP 500錯誤(Chrome的默認「服務器錯誤」頁面)。
有沒有人有任何見解,爲什麼我得到一個HTTP 500錯誤,而不是看到我的自定義錯誤消息?
嘗試了您列出的所有解決方案,但不幸的是,似乎沒有任何工作;所有仍然最終與http 500錯誤。 – Capitrium