我知道我可以基于默认的
创建一个名为MY_Form_validation
的文件
$config['subclass_prefix'] = 'MY_';
但是,如果我想用不同的MY_Form_validation
类表示不同的表单怎么办?如果可以,我将如何加载并在验证控制器中调用它?
例如MY_Student_registration_form_validation
,MY_Student_cancellation_form_validation
等等?
大多数在线问题只是直截了当地建议创建这个唯一的类但不适用于多个实例。
注意我尝试在MY_Student_registration_form_validation
(CI 3.x)中创建application/libraries
类并使用
$this->load->library('my_student_registration_form_validation');
我收到错误Non-existent class: My_student_registration_form_validation
。
然后我尝试了没有前缀MY
$this->load->library('student_registration_form_validation');
我得到了另一个Unable to load the requested class: Student_registration_form_validation
。
答案 0 :(得分:1)
将此篇文章放在APPPATH.'config/config.php'
文件
spl_autoload_register(function ($class) {
//this block you can skip
if (substr($class,0,3) !== 'CI_') {
if (file_exists($file = APPPATH.'core/'.$class.'.php')) {
include $file;
}
}
//this block is what you need
if (substr($class,0,3) !== 'CI_') {
if (file_exists($file = APPPATH.'libraries/'.$class.'.php')) {
include $file;
}
}
});
这样,您甚至无法设置配置文件的预定义MY_
前缀。
将您的文件和类命名为:
Student_registration_form_validation.php | Student_registration_form_validation
Student_cancellation_form_validation.php | Student_cancellation_form_validation
Some_controller_code.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Some_controller_code extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
//you have to load form_validation library first
//if custom libraries are extending it
$this->load->library('form_validation');
$this->load->library('student_registration_form_validation');
//example of using method from native form_validation library
if ( $this->student_registration_form_validation->set_message('rule1', "Some message here") )
echo 'It\'s working';
}
}
答案 1 :(得分:0)
好孩子,我现在明白了。
使用前缀MY_
或您在application/config/config.php
文件中声明的任何内容创建自定义表单验证类。例如,CI {x。MY_Student_registration_form_validation
内的application/libraries
。
$config['subclass_prefix'] = 'MY_';
在你的控制器中(我将在这里使用控制器,因为我没有在模型上测试它),你可以通过以下方式加载这个自定义类:
$this->load->library('my_student_registration_form_validation');
您现在可以通过以下方式使用其方法:
$this->my_student_registration_form_validation->validate_student();