好的,我不知道什么不起作用。我知道我的表单验证肯定是有效的,因为我的所有其他功能都正常工作,但是我设置的消息是真的还是假的,并且没有一个出现所以我觉得它正在跳过验证规则...这很奇怪..
$this->form_validation->set_rules('region', 'required|valid_region');
我的库文件夹中的MY_Form_validation.php中的规则。首先加载库IS。正如我所说的所有其他验证工作正常,例如我的reCaptcha和所有内容。
function valid_region($str) {
$this->load->database();
if($this->db->query('SELECT id
FROM region
WHERE name = ?
LIMIT 1', array($str))->num_rows() == 0) {
//not a valid region name
$this->set_message('valid_region', 'The %s field does not have a valid value!');
return false;
}
$this->set_message('valid_region', 'Why is it validating?');
}
没有任何消息会被设置,所以我感觉没有什么是验证的!
答案 0 :(得分:3)
set_rules()
函数需要3个参数
- 字段名称 - 您为表单字段指定的确切名称。
- 此字段的“人”名称,将插入错误消息中。 例如,如果您的字段被命名为“user”,您可能会给它一个人 “用户名”的名称。注意:如果您想要字段名称 存储在语言文件中,请参阅翻译字段名称。
- 此表单字段的验证规则。
醇>
您将验证规则作为第二个参数。这就是验证没有运行的原因。试试这个:
$this->form_validation->set_rules('region', 'Region', 'required|valid_region');
答案 1 :(得分:2)
而不是
$this->form_validation->set_rules('region', 'required|valid_region');
尝试
$this->form_validation->set_rules('region', 'required|callback_valid_region');
使用自定义验证规则时,您应该使用
回调以预先添加功能名称。
更新
并使用
$this->form_validation->set_message
而不是
$this->set_message
并在function valid_region
使用return true
答案 2 :(得分:0)
$this->form_validation->set_rules('region', 'Region', 'required|valid_region');
function valid_region() {
$str = $this->input->post('name_of_input');
$this->load->database();
if($this->db->query('SELECT id
FROM region
WHERE name = ?
LIMIT 1', array($str))->num_rows() == 0) { // why compare "=" between `name` field and array() ?
//not a valid region name
$this->form_validation->set_message('valid_region', 'The %s field does not have a valid value!');
return false;
}
$this->form_validation->set_message('valid_region', 'Why is it validating?');
return true;
}