codeigniter form_validation_run()虽然应该返回false但不返回false

时间:2011-06-21 18:47:41

标签: forms codeigniter validation

我在名为post; php的控制器中有一个表单验证部分,其中表单验证应该返回false,但它不会。它可能只是一个错字,但看了几个小时后,我真的找不到它。我希望你能。

我的控制器名为change_password的函数的第一部分如下所示:

      $this->form_validation->set_rules('new','required|matches[confirm]|min_length[8]|max_length[16]');
        if($this->form_validation->run()==FALSE){
            $this->session->set_flashdata('msg_type','error');
            $this->session->set_flashdata('msg',validation_errors('<p>','</p>'));
            redirect('members#pass');
            return;
        }

发布到上述控制器的视图如下所示。看起来像这样:

<h3>Update your password</h3>
<?php
echo img('update_pass.png',array("class" => "fr"));
echo form_open('post/update_pass'); ?>
<table>
    <tr>
        <td><?php echo form_label('Current password:','current'); ?></td>
        <td><?php echo form_password('current'); ?></td>
    </tr>
    <tr>
        <td><?php echo form_label('New password:','new')?></td>
        <td><?php echo form_password('new'); ?></td>
    </tr>
    <tr>
        <td><?php echo form_label('Retype new password:','confirm'); ?></td>
        <td><?php echo form_password('confirm'); ?></td>
    </tr>
    <tr>
        <td></td>
        <td><input type='submit' value='update'></td>
    </tr>
</table>
</form>

其余的代码完全正常。但是例如当我输入以下数据时

current  |  'mycurrentpass'
new      |  jimm
confirm  |  rollercoaster

如果两个字段都不匹配,且长度太短,则form_validation_run仍会返回true。

1 个答案:

答案 0 :(得分:3)

set_rules的签名是set_rules($field, $label = '', $rules = '')。我想你错过了一个参数。