php - 无法在 codeigniter 的 MY_Form_validation 中调用自定义验证
问题描述
我在代码点火器中创建了一个自定义验证类。
class MY_Form_validation extends CI_Form_validation {
function __construct($rules = array()) {
parent::__construct($rules);
}
public function required_fr($str) {
var_dump('test');
if (!is_array($str)) {
return (trim($str) == '') ? FALSE : TRUE;
} else {
return (!empty($str));
}
}
}
我的控制器如下所示:
class Ticket extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->library('form_validation');
$this->form_validation->set_error_delimiters('<div class="alert alert-danger alert-dismissable"><a aria-hidden="true" data-dismiss="alert" class="close" type="button">×</a>', '</div>');
}
public function new_ticket() {
$this->form_validation->set_rules('category', 'categorie', 'required_fr');
if ($this->form_validation->run() == TRUE) {
...
}
}
}
如果我不填写“类别”字段,则不会调用验证“required_fr”。我从来没有从屏幕上的 var_dump 收到消息“测试”。
如果我输入“required”而不是“required_fr”,我会在我的页面中得到绑定到 required 的正确消息。如果我输入 required_fr,我根本不会收到任何消息。
我还尝试在表单验证的 set_rules 函数中添加 callback_ ,但这似乎也不起作用。
如果我在 MY_Form_validation 类的构造函数中放置一个 var_dump,我会看到它在我的页面上弹出,因此自定义验证类被加载。
我错过了什么?
解决方案
尝试代替 $str 使用输入帖子
文件名 application/libraries/MY_Form_validation.php
<?php
class MY_Form_validation extends CI_Form_validation {
protected $CI;
public function __construct() {
$this->CI =& get_instance();
}
public function required_fr() {
if (!is_array($this->CI->input->post('your_input_name'))) {
if (trim($this->CI->input->post('your_input_name')) == '') {
$this->set_message('required_fr','some message');
return false;
} else {
return true;
}
}
}
推荐阅读
- java - 我应该使用什么进口
- python - 在 numba 中编译 abs() 比普通的 python 函数慢
- r - 更新此数据时自动更新数据文档
- reactjs - 刷新浏览器时反应路由器不起作用
- javascript - 带有对象 Javascript 或 JSON 的列自定义数据表
- kotlin - 从 Firebase 存储中获取图像。GlideApp 未解决的参考
- android - 如何将服务添加到设置菜单?
- node.js - 这两种axios上传方式有什么区别?
- java - 如果列表之间不相等,则查找项目
- google-apps-script - 以编程方式创建的触发器仅适用于当前文件,尽管提供了其他文件的密钥