[英]codeigniter callback doesn't work?
這是codeigniter中的簡單登錄驗證腳本。 我不明白這個問題。 我已經看過用戶指南,但是回調不起作用。
public function form_validation()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'required|trim |alpha_numeric');
$this->form_validation->set_rules('password', 'Password', `enter code here` 'required|trim |xss_clean');
$this->form_validation->set_rules('email', 'Email', 'required|trim|valid_email|xss_clean|callback_validate');
if ($this->form_validation->run()) {
echo "validated but not logged";
} else {
$this->load->view('errors/formerror');
}
}
public function validate()
{
$this->load->model('model_users');
if ($this->model_users->can_login()) {
echo "Logged";
} else {
$this->form_validation->set_message('validate', "Incorrect username/password");
}
}
public function form_validation()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'required|trim|alpha_numeric');
$this->form_validation->set_rules('password', 'Password', 'required|trim |xss_clean');
$this->form_validation->set_rules('email', 'Email', 'required|trim|valid_email|xss_clean|callback_email_check');
if ($this->form_validation->run()) {
echo "validated but not logged";
} else {
$this->load->view('errors/formerror');
}
}
public function email_check($email)
{
$this->load->model('model_users');
if ($this->model_users->can_login($email)) {
echo "Logged";
return true;
} else {
$this->form_validation->set_message('email_check', "Incorrect username/password");
return false;
}
}
添加_check
后綴,例如callback_email_check
和回調方法email_check
並進行檢查。 在此處找到更多信息CodeIgniter回調
我陷入了這樣的混亂,幾乎淹死了整整一天。 這是問題所在。 我正在使用模型,事實證明在模型中回調所需的功能不起作用。 要解決此問題:
確保用於回調的函數在控制器中,而不在模型中。
它像魔術一樣工作。 我不知道為什么,但它修復了我的回調情況。
添加檢查后綴並沒有太大區別,因為該手冊對后綴沒有特別說明。 前綴回調是我所知道的永遠不應該遺漏的內容。 我有幾個沒有_check后綴的回調。
手冊內容如下:
要調用回調,只需將函數名稱放入規則中,並以“ callback_”作為規則前綴。 如果您需要在回調函數中接收一個額外的參數,通常只需在方括號之間的函數名稱后添加它,例如:“ callback_foo [bar]”,則它將作為回調函數的第二個參數傳遞
我注意到的是手冊中的示例在控制器而不是模型中具有回調函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.