无法访问与您的字段名称pan_number对应的错误消息。(panValidation)

时间:2016-04-15 05:17:21

标签: codeigniter callback hmvc

我在Code Igniter 3.0.4中使用HMVC 我用Google搜索并尝试通过执行以下操作来解决此问题。

1>自动加载安全性

2 - ;使用xss_clean

3>在application / language / english中,将文件:MY_form_validation_lang.php与错误消息

放在一起

4>在application / libraries / MY_form_validation.php中输入以下代码:

public $CI;
public function __construct($rules = array()) {
    parent::__construct($rules);
    $this->CI->lang->load('MY_form_validation');
}

function run($module = '', $group = '') {
    (is_object($module)) AND $this->CI = &$module;
    return parent::run($group);
}

5个在application / language / english / MY_Form_validation_lang文件中添加了自定义错误:

$lang['panValidation'] = 'Invalid PAN Number system file';

这是最终代码(控制器):

<?php
class Personal_details extends MX_Controller {

    public $data = array();

    function __construct() {
        parent::__construct();

        $this->load->library('session');
        no_cache();

        /* use xss clean */
        $this->load->helper('security');

        /* form and inputs */
        $this->load->helper('form');

        /* form validations */
        $this->load->library('form_validation');
    }

    /* CUSTOM CHECK CONSTRAINT FOR FORM INPUT */

    public function panValidation($panNumber) {
        $pan_regex = "/^[A-Z]{5}\d{4}[A-Z]{1}$/";
        if (!preg_match($pan_regex, $panNumber)) {
            $this->form_validation->set_message('panValidation', 'Invalid PAN Number');
            return false; // invalid pan
        } else {
            return true;
        }
    }

     public function index() {
        if ($this->input->post()):
            $this->form_validation->set_rules('pan_number', 'pan_number', 'required|strip_tags|trim|xss_clean|min_length[10]|max_length[10]|callback_panValidation');           

            if ($this->form_validation->run($this) === FALSE) {
                /*$this->form_validation->set_message('panValidation', 'The {field} value is invalid');*/
                echo validation_errors();
            } else {
                echo 'No error';
            }
        endif;
        $this->load->view('pan/index', $this->data);
    }
}
?>

仍然存在错误。不知道发生了什么事。请帮忙。 我在linux上使用共享主机,文件名是MY_form_validation_lang.php但在本地它的MY_Form_validation_lang.php(差异是大写f)

1 个答案:

答案 0 :(得分:1)

您应该使用下一个文件名:form_validation_lang.php作为自定义语言文件。你不要使用'MY_'前缀。
(例如:application / language / english / form_validation_lang.php)
看详情:
https://www.codeigniter.com/userguide3/libraries/language.html