我使用CodeIgniter 2.3.1並在config
中創建了form_validation.php
文件,其內容如下。CodeIgniter自定義驗證功能不工作
<?php
$config = array(
array(
'field' => 'firstname',
'label' => 'First Name',
'rules' => 'required'
),
array(
'field' => 'lastname',
'label' => 'Last Name',
'rules' => 'required'
),
array(
'field' => 'email',
'label' => 'Email',
'rules' => 'required|valid_email|callback_unique_email'
),
array(
'field' => 'password',
'label' => 'Password',
'rules' => 'required|matches[confirm_password]'
),
array(
'field' => 'confirm_password',
'label' => 'Confirm Password',
'rules' => 'required'
)
);
function unique_email($email) {
if($email == '[email protected]') {
$this->form_validation->set_message('unique_email', 'Hello World !');
return false;
}
}
?>
而且檢查user
控制器的form_validation
在register
功能。代碼如下。
public function register() {
$this->load->helper('form');
$data['message'] = '';
if($this->input->post('submit')) {
$this->load->library('form_validation');
if($this->form_validation->run() == FALSE) {
$data['message'] = 'User could not be saved.';
} else {
$user_data['firstname'] = $this->input->post('firstname');
$user_data['lastname'] = $this->input->post('lastname');
$user_data['email'] = $this->input->post('email');
$user_data['password'] = md5($this->input->post('password'));
if($this->user_model->insert($user_data)) {
if($this->user_model->login($user_data)) {
$this->session->set_flashdata('message', 'User saved successfully.');
redirect('/user', 'refresh');
}
}
}
}
$this->load->view('user/register', $data);
}
但我沒有得到自定義方法的驗證消息。請告訴我該怎麼做?這項工作更受讚賞。
自定義函數屬於該函數的控制器中的形式。 – Rooneyl 2013-03-12 14:42:37
請看下面的Spikers回答並閱讀手冊。知道最終你也可以將你的表單驗證放入模型中,並將數據庫函數放入模型中,然後將true/false返回給控制器。如果爲false,表單驗證的所有錯誤消息等功能仍然有效,則不必在控制器中。 – cartalot 2013-03-12 18:03:45