【问题标题】:Cant return error message in CodeIgniter 3 callback无法在 CodeIgniter 3 回调中返回错误消息
【发布时间】:2016-04-19 05:45:54
【问题描述】:

我的代码有问题。我正在为我的小项目使用 CI3 创建一个简单的登录。我的问题是我在回调验证中有一条错误消息。

这是我在尝试验证表单时收到的错误。

Unable to access an error message corresponding to your field name Password.(check_database)

这是控制器中的mo代码:

public function index() {

        $this->form_validation->set_rules('username', 'Username', 'trim|required');
        $this->form_validation->set_rules('password', 'Password', 'trim|required|callback_check_database');

        $this->form_validation->set_error_delimiters('<div class="error text-red">', '</div>');

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

            $data = array();
            $data['modules'] = $this->flx_lib->moduler($data);
            $this->load->view('login', $data);

        } else {


            //ok
        }

    }

    public function check_database($password) {

        $username = $this->input->post($username);
        $result = $this->flx_users->validate_user($username, $password);

        if($result) {
            //ok
            return TRUE;
        } else {
            $this->form_validation->set_message('check_database', 'Invalid username or password');
            return FALSE;
        }

    }

这是我的看法:

<div class="form-group has-feedback <?php error_exists('username'); ?>">
                <input type="text" class="form-control" name="username" placeholder="Username" />
                <span class="fa fa-user form-control-feedback "></span>
                <?php echo form_error('username'); ?>
            </div>

            <div class="form-group has-feedback <?php error_exists('password'); ?>">
                <input type="password" class="form-control" name="password" placeholder="Password">
                <span class="glyphicon glyphicon-lock form-control-feedback"></span>
                <?php echo form_error('password'); ?>
            </div>

你能帮我解决这个问题吗?我正在将 CI3 与 HMVC 一起使用

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:
    public function index() {
    
        $this->form_validation->set_rules('username', 'Username', 'trim|required');
        $this->form_validation->set_rules('password', 'Password', 'trim|required|callback_check_database', 
            array('check_database' => 'Invalid username or password.')
        );
    
        $this->form_validation->set_error_delimiters('<div class="error text-red">', '</div>');
    
        if($this->form_validation->run() == FALSE) {
    
            $data = array();
            $data['modules'] = $this->flx_lib->moduler($data);
            $this->load->view('login', $data);
    
        } else {
    
    
            //ok
        }
    
    }
    
    public function check_database($password) {
    
        $username = $this->input->post($username);
        $result = $this->flx_users->validate_user($username, $password);
    
        if($result) {
            //ok
            return TRUE;
        } else {
            return FALSE;
        }
    
    }
    

    我重新编码了这个。有什么东西混在一起了。 这是来自docs

    $this->form_validation->set_rules('field_name', 'Field Label', 'rule1|rule2|rule3',
        array('rule2' => 'Error Message on rule2 for this field_name')
    );
    

    【讨论】:

    • 还是一样的结果。 :(
    • 检查更新的代码,我第一次将设置规则与设置消息混合在一起。
    【解决方案2】:

    好的,我在代码中发现了错误。实际上这是 HMVC 表单验证的问题。

    正确答案的链接如下: CodeIgniter - Unable to access an error message corresponding to your field name Password.(pword_check)

    Solution:
    
    1. Create MY_Form_validation.php file in libraries folder and paste following code in it.
    
     if (!defined('BASEPATH')) exit('No direct script access allowed');
        class MY_Form_validation extends CI_Form_validation
        {
    
        function run($module = '', $group = '')
        {
           (is_object($module)) AND $this->CI = &$module;
            return parent::run($group);
        }
    }
    
        And change if ($this->form_validation->run() == FALSE) to if ($this->form_validation->run($this) == FALSE) thats all folks..
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-18
      • 2013-11-07
      • 2018-02-09
      • 1970-01-01
      • 2018-12-08
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多