我想知道為什么我的復選框在它已經被勾選后仍然失敗。這是條款和條件的復選框
控制器:
// Load the registration page
public function registration_page(){
$this->load->view('includes/main_index');
$this->load->view('recycler/forms/register');
$this->load->view('includes/footer');
}
public function accept_terms_conditions()
{
// Checkbox name is 'agree' which checks if the value of $checked
// is equal to 1
$checked = $this->input->post('agree');
return (int) $checked == 1 ? TRUE : FALSE;
}
$this->form_validation->set_rules('agree', '', 'callback_accept_terms_conditions');
if($this->form_validation->run() == FALSE)
{
// After form submission, it always goes here
$this->registration_page();
}
else{ /* Proceed to data insertion */ }
我使用 print_r 函式列印出它的 post 值,它回傳 1,但驗證仍然失敗。$this->form_validation->run() == FALSE 表示如果表單驗證有錯誤,會回到注冊視圖,也就是 $this->register() 方法呼叫。
列印_r
勾選復選框
有誰知道為什么它總是失敗?
編輯:添加了加載注冊視圖的方法,即 register() 方法
uj5u.com熱心網友回復:
當復選框被選中而不是 1 時,它會將“打開”作為值。
public function accept_terms_conditions()
{
// returns true if the checkbox 'agree' has been checked
return ($this->input->post('agree') === 'on');
}
而且你的條件是錯誤的,你是說如果驗證失敗然后呼叫方法 register 我認為它應該是相反的。
uj5u.com熱心網友回復:
嘗試
public function accept_terms_conditions() {
$checked = ($this->input->post('agree')) ? TRUE : FALSE;
return $checked;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/315061.html
標籤:php 形式 代码点火器 验证 codeigniter-3
