我的想法:
- 创建一个可以在检查输入字段的最小长度时加载的自定义助手。
- 将其创建为帮助程序,以便可以在不同的文件中重复使用并保持其组织和清洁。
我的控制器代码如下(application/controllers/registration.php):
- 下面的助手“错误”是我自己创建的正在加载的助手。
callback_min_length[2] 是我尝试将值发送到辅助函数
// 加载助手 $this->load->helper(array('form', 'url', 'error'));
// Load library $this->load->library('form_validation'); // Set form rules $rules = array( array( 'field' => 'firstName', 'label' => 'firstName', 'rules' => 'callback_min_length[2]|trim' ) ); $this->form_validation->set_rules($rules); // Set custom error messages if ($this->form_validation->run() == FALSE) { $this->load->view('header'); $this->load->view('view_registration'); $this->load->view('footer'); } else { $this->load->view('header'); $this->load->view('view_registration'); $this->load->view('footer'); }
下面是我的自定义助手代码(application/helpers/error_helper.php):
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
function min_length($str, $val) {
// Load CI instance to be able to load library
$ci =& get_instance();
// Load library
$ci->load->library('form_validation');
if (preg_match("/[^0-9]/", $val)) {
return FALSE;
}
if (function_exists('mb_strlen')) {
if(mb_strlen($str) < $val) {
$ci->form_validation->set_message('custom_min_length', 'You have to write at least ' . $val . ' characters');
return FALSE;
} else {
return TRUE;
}
}
if(strlen($str) < $val) {
$ci->form_validation->set_message('custom_min_length', 'You have to write at least ' . $val . ' characters');
return FALSE;
} else {
return TRUE;
}
}
?>
我没有得到任何输出,甚至没有错误消息。我究竟做错了什么?