当我尝试基本的东西时,我会遇到问题,让我们说,向用户显示登录表单:我的模块中有一个Users控制器有一个函数login_form()的用户应该显示表单。我的CI文件夹application / controllers / Admin.php中也有一个Controller Admin,它有一个可以调用用户模块的login()函数。
问题:
如果我直接浏览users / login_form,它可以工作并调用login_form()
函数。
但是如果浏览了Admin / login并将Users / login_form作为模块调用,我就无法访问modules::run()
- 我必须使用modules::load()
我只尝试了一个简单的执行,其中类构造函数和方法只写了他们的名字和&加载路径(请参阅下面的完整代码)
测试参数
// URI called : admin/login
// Admin extends MX | Users extends MX
// called from Admin::login()
$this->users = Modules::load('users')->login_form();
结果
// class constructor - extends
Admin - MX_Controller
# Fx in Admin
Fx : login
// class constructor - extends
Users - MX_Controller
# Fx in users
Fx : login_form
因此虽然Modules::load()
允许我从管理员访问users / login_form方法,但我无法让Modules::run()
工作......
测试B(不工作)参数
// URI called : admin/login
// Admin extends MX | Users extends MX
// called from Admin::login()
$this->users = Modules::run('users/login_form');
结果
// same result as above for Admin
// class constructor - extends
Users - MX_Controller
# !! login_form() FROM USERS IS NOT EXECUTED !!
TEST A执行login_form()
函数,但是虽然TEST B确实加载了Users Class的构造函数,但它永远不会到达login_form()
函数......
我想知道它是否可能是路由问题,但是因为在运行和运行中调用了类Users的构造函数。加载,我怀疑这可能是那个..
管理控制器(application / controllers / Admin.php):
class Admin extends MX_Controller
{
public function __construct()
{
parent::__construct();
echo get_class().' - '.get_parent_class()." [".dirname(__FILE__)."]<br>\n";
}
function login()
{
echo "Fx : ".__FUNCTION__."<br>\n";
// works fine
// loads the Users class constructor
// execute login_form()
Modules::load('users')->login_form();
// Does only load User constructor
// Modules::run('users/login_form');
}
}
用户控制器(application / modules / users / controllers / Users.php)
class Users extends MX_Controller {
public function __construct(){
parent::__construct();
echo get_class().' - '.get_parent_class()." [".dirname(__FILE__)."]<br>\n";
}
public function login_form()
{
echo "Fx : ".__FUNCTION__."<br>\n";
}
}