我在代码点火器中创建了自定义验证。我有以下代码,但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的新手,并开始学习。
是的,它仅用于调试目的。我添加了exit()来仔细检查方法是否被执行。但在我的代码中很难说,我的自定义验证方法都没有成功执行。我会尝试你的代码。谢谢您的帮助。 – user1149244
我已经尝试过您的建议,但自定义字段验证仍然无法正常工作。我一步一步地调试代码,然后发现问题。我收到了此错误消息,无法找到验证规则:is_Fieldunique。我在我的控制器中加载了自定义库。这里可能是什么问题? – user1149244
我编辑了我的答案,进行了一些更详细的介绍 - 希望这对于帮助您加载和使用验证功能会很有帮助。您似乎也只将1个参数传递给预期为2的验证函数。 – jleft