Rob*_*ert 0 customization helper codeigniter-2
我的点子:
我的控制器代码如下(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');
}
Run Code Online (Sandbox Code Playgroud)我的自定义助手代码如下(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;
}
}
?>
Run Code Online (Sandbox Code Playgroud)
我没有得到任何输出,甚至没有错误消息。我究竟做错了什么?
首先,PHP 中的零输出(即空白页)通常意味着存在致命错误,但您的错误报告已关闭。我不打算解释如何正确打开它,您应该能够使用 Google 或 StackOverflow 10 秒钟弄清楚这一点。
有一个MUCH添加自定义的验证规则更简单的方法:延长Form_validation库。
应用程序/库/MY_Form_validation.php:
<?php
class MY_Form_validation extends CI_Form_validation {
/**
* Custom minimum string length validation.
*/
public function min_strlen($input, $min_length) {
$this->set_message('min_strlen', 'Error Message Here');
// Your strlen logic here, returns TRUE or FALSE
}
}
Run Code Online (Sandbox Code Playgroud)
说真的,就是这样。没有回调,没有助手。然后像任何其他表单验证规则一样调用您的新规则,例如:
$this->form_validation->set_rules('field', 'My Field', 'required|min_strlen[5]|trim');
Run Code Online (Sandbox Code Playgroud)
如果你想min_length用这个覆盖默认规则,只需将你的新方法命名为相同的。它将优先于原始版本。
需要记住的一点:如果您发现自己立即调用和/或与助手中的 CI 库进行交互,则该函数可能属于该库本身。
| 归档时间: |
|
| 查看次数: |
1702 次 |
| 最近记录: |