2017-04-13 120 views
0

在我的codeigniter版本3.1.4/hmvc登录如果由于某种原因表单验证密码输入为空回调函数首先显示而不是所需的消息?Codeigniter&HMVC Callback首先显示

https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc

上的消息显示它应该显示所需的密码信息第一次,而不是回调

enter image description here

问题我怎样才能确保它显示了正确的验证消息 第一。

自动加载form_validation

$autoload['libraries'] = array('database', 'form_validation'); 

控制器

<?php 

class Login extends MX_Controller { 

    public $CI; 

    public function __construct() { 
     parent::__construct(); 
     $this->load->model('catalog/user/user_model'); 

     $this->form_validation->CI =& $this; 
    } 

    public function index() { 
     $data['type'] = $this->input->post('type'); 
     $data['password'] = $this->input->post('password'); 

     $this->form_validation->set_rules('type', 'Username Or Email', 'trim|required'); 
     $this->form_validation->set_rules('password', 'password', 'required|callback_validatePassword[password]'); 

     if ($this->form_validation->run() == false) { 

      $data['header'] = Modules::run('catalog/common/header/index'); 
      $data['footer'] = Modules::run('catalog/common/footer/index'); 

      $this->load->view('template/account/login', $data); 

     } else { 

      $user_info = $this->user_model->get_user($user_id = '', $this->input->post('type', true)); 

      if ($user_info) { 

       $remember = $this->input->post('remember') ? TRUE : FALSE; 

       $this->user->login($user_info['user_id'], $remember); 

       redirect(base_url("users") .'/'. $user_info['user_id'] .'/'. $user_info['username']); 
      } 
     } 
    } 

    public function validatePassword($str) { 
     if ($this->user_model->validate_password($str, $this->input->post('type', true))) { 
      return TRUE; 
     } else { 
      $this->form_validation->set_message('validatePassword', 'Opp\'s somthing wrong with login!'); 
      return FALSE; 
     } 
    } 
} 

应用>库> MY_Form_validation.php

<?php 

class MY_Form_validation extends CI_Form_validation { 

    public $CI; 

} 

回答

0
just keep the callback validation separate 
$this->form_validation->set_rules('password', 'password', 'trim|required'); 
// check for post values is empty or not? 
if(!empty($data['password'])) { 
    $this->form_validation->set_rules('password', 'password', 'callback_validatePassword[password]'); 
} 
+0

这是为什么任何理由 – user4419336

+0

我仍然有同样的问题 – user4419336

+0

您可以删除微调功能,并尝试.... – 438sunil