模块加载中断视图加载(旧代码)

时间:2012-05-05 13:35:52

标签: php codeigniter codeigniter-2

我正在尝试使用codeIgniter和Modular Extension。到目前为止,我遵循了wiredesignz on bitbucket的安装说明。现在我正在尝试NetTuts的教程HMVC: an Introduction and Application

我正在使用CodeIgniter 2.1的实际版本和Modular Extension的实际版本(从bitbucket下载.zip版本)。

一切正常,直到我尝试从另一个模块的控制器运行方法。

简而言之,就是有两个模块(site& login)。在站点的控制器中有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();
}  

像这样我收到了一个错误:

  

无法加载请求的文件:logged_in_area.php

有问题的方法也在网站模块中:

// modules/site/controllers/site.php

function members_area()
{
$this->load->view('logged_in_area');
}

脚本执行到load->view行并产生错误。使用以下行在站点控制器中运行logged_in_area.php方法访问is_logged_in没有问题:

$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:我怎样才能获得有关错误的更多信息? CodeIgniter似乎对错误输出非常保留...

1 个答案:

答案 0 :(得分:0)

如文档here中所述,要从另一个模块中加载视图,您需要使用扩展MX控制器和方法:

<?php echo Modules::run('module/controller/method', $param, $...); ?>