我试着codeIgniter和模块化扩展。到目前为止,我遵循wiredesignz on bitbucket的安装说明。现在我正在尝试NetTuts的教程HMVC: an Introduction and Application。模块加载中断查看加载(旧代码)
我正在用CodeIgniter 2.1的实际版本和Modular Extension的实际版本(从bitbucket下载.zip版本)进行此操作。
所有工作正常,直到我试图从另一个模块的控制器运行一个方法。
设置简而言之,有两个模块(站点&登录)。在站点的控制器内有site.php(/modules/site/controllers/site.php
),并且有一个方法用于检查用户是否已登录。如果在未登录的情况下访问站点,此方法将退出脚本执行。由于此方法在逻辑上属于登录模块,作者建议将它移到那里。所以它被移到/modules/login/controllers/login.php
。
现在的问题是,如何从站点模块内访问登录模块的方法。从本教程中的小幅调整代码:
// modules/site/controllers/site.php
function __construct()
{
// parent::Controller();
// replaced with:
parent::__construct();
// modules::run('login/is_logged_in');
// replaces with:
$this->load->module('login')->is_logged_in();
}
像这样我得到了一个错误:
Unable to load the requested file: logged_in_area.php
问题的方法是在网站模块内部还有:
// modules/site/controllers/site.php
function members_area()
{
$this->load->view('logged_in_area');
}
该脚本执行直到load->view
行并产生错误。有没有问题,从站点控制器内的线路运行is_logged_in
方法访问logged_in_area.php
:
$this->is_logged_in();
任何想法?
编辑:
应用程序树:
/application
/...
/modules
/login
/controllers
login.php
/models
/views
login_form.php
signup_form.php
signup_successful.php
/site
/controllers
site.php
/models
membership_model.php
/views
logged_in_area.php
PS:我怎样才能得到更多的错误信息?笨似乎是有关错误输出很矜持......
在index.php中,frontcroller中,有一行可以定义您的环境。确保该行说'define('ENVIRONMENT','development');'。这样,你会得到所有的错误。 – Zombaya
它被设置为'development'。错误报告是'E_ALL'。没有改变任何东西。 – fourreux
然而,我认为你不应该从其他模块加载视图。我认为模块化扩展的概念是可以调用其他控制器,而不是其他视图。我建立了一个图书馆来处理我的登录状态和一切。这样你就可以在任何地方使用它。然后,您仍然可以创建一个模块来显示登录形式和所有内容。 – Zombaya