我在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)
答案 0 :(得分:1)
您应该使用下一个文件名:form_validation_lang.php作为自定义语言文件。你不要使用'MY_'前缀。
(例如:application / language / english / form_validation_lang.php)
看详情:
https://www.codeigniter.com/userguide3/libraries/language.html