2011-06-21 56 views
0

我有一個控制器中的表單驗證部分稱爲post; php,其中表單驗證應該返回false,但它不會。這可能只是一個錯字,但看了幾個小時後,我真的找不到它。我希望你可以。codeigniter form_validation_run()不返回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。

回答

3

set_rules的簽名是set_rules($field, $label = '', $rules = '')。我想你錯過了一個參數。

+0

thx很多,我會盡快接受你的回答(只有在10分鐘左右之後纔有可能)。 – bigblind

相關問題