【发布时间】:2015-07-23 13:58:48
【问题描述】:
我有一个问题,我无法想象这是怎么回事。所以我运行 form_validation 来验证我的表单输入。之后,$_POST['user_name'] 变为数组而不是字符串。
$this->form_validation->set_rules('user_name', 'Vartotojo vardas',
'trim|required|min_length[5]|max_length[30]|alpha_dash|callback_checkUserNameUnique');
$this->form_validation->set_rules('email', 'El. pašto adresas',
'trim|required|valid_email|callback_checkEmailUnique');
$this->form_validation->set_rules('password', 'Slaptažodis',
'trim|required|min_length[5]|max_length[60]');
$this->form_validation->set_rules('password_2', 'Slaptažodžio pakartojimas',
'trim|required|min_length[5]|max_length[60]|matches[password]');
$this->form_validation->set_rules('phone_number', 'Telefono numeris',
'trim|required|callback_checkIfPhoneGood');
$this->setFormMessages();
if ( $this->form_validation->run() == false ) {
$data['json'] = array(
'failed' => true,
'errors' => $this->form_validation->error_array()
);
} else {
print_r($_POST['user_name']);
print_r($this->input->post('user_name', true));
}
在启动$this->form_validation->run() 并打印$_POST['user_name'] 之前返回字符串,在$this->form_validation->run() 之后返回空数组。
有什么想法吗?
编辑:
我的 checkUserNameUnique 方法:
function checkUserNameUnique($userName)
{
return $this->cache->model('system_model', '_getCustomTableData', array(
'users', array(array('user_name' => strtolower($userName))), 'id DESC', FALSE, 1
), CACHE_USER_CHECK_INFO_TIME);
}
【问题讨论】:
-
也许是您的回调 checkUserNameUnique 导致了问题?你试过删除这个吗?
-
上帝,谢谢。但我不确定为什么会出现问题。添加函数代码。
-
首先删除
|callback_checkUserNameUnique并确定这是否是您的问题。否则,这个函数正在调用另一个模型,所以我仍然不知道它在做什么。 -
@Devon 是的,有问题。但我不明白为什么,只有一个回调用于检查。感谢您的帮助,更改了方法操作,问题消失了。
-
回调与否,所有规则都可能以两种方式之一起作用 - 验证或修改。如果函数/规则返回布尔值,则验证;在任何其他情况下,它都会修改原始输入 - 这也是
trim的工作方式。
标签: php forms codeigniter