【发布时间】:2013-04-14 17:44:40
【问题描述】:
我在 Code Igniter 中创建了一个自定义验证。我有以下代码,但 is_FieldUnique 验证不起作用。即使,我var_dump() 的参数仍然没有得到它正在显示的信息。我在下面的代码做错了什么?我没有得到is_FieldUnique 的任何回报,但默认验证工作正常,就像required、min_length 一样。
在application/libraries/Customfieldvalidation.php,下面有这行代码:
class Customfieldvalidation extends CI_Form_validation
{
public function is_FieldUnique($str, $field)
{
var_dump($str);
var_dump($field);
list($table, $field)=explode('.', $field);
$q = $this->CI->db->query("SHOW KEYS FROM $table WHERE Key_name = 'PRIMARY'")->row();
$primary_key = $q->Column_name;
if($this->CI->input->post($primary_key) > 0):
$query = $this->CI->db->limit(1)->get_where($table, array($field => $str,$primary_key.' !='=>$this->CI->input->post($primary_key)));
else:
$query = $this->CI->db->limit(1)->get_where($table, array($field => $str));
endif;
echo $query;
exit();
return $query->num_rows() === 0;
}
}
在我的控制器中,我有以下代码:
class User extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->library('customfieldvalidation');
}
function _setRules()
{
$this->form_validation->set_rules('email_address', 'Email Address', 'required|valid_email|min_length[8]|is_FieldUnique[users.email_address]');
$this->form_validation->set_message('is_FieldUnique', '* must have a unique value');
}
}
自定义字段不起作用的原因可能是什么?我知道这对每个人来说都非常简单,但我是 Codeigniter 的新手并开始学习。
【问题讨论】: