用户
 找回密码
 入住 CI 中国社区
搜索
查看: 23171|回复: 7
收起左侧

[HELP] CI中怎么在一个控制器中调用另外一个控制器的函数

[复制链接]
发表于 2012-10-9 20:03:57 | 显示全部楼层 |阅读模式
PHP复制代码

  • <?php  
    [*]class BlogPost extends CI_Controller  
    [*]{  
    [*]    public function createPost() {  
    [*]        if (!Authentication::checkAuthentication()) {  
    [*]            // redirect to login  
    [*]        }  
    [*]        else {  
    [*]            // proceed  
    [*]            Messages::notifyAdmin();  
    [*]        }  
    [*]    }  
     
    [/list]
复制代码

CI中怎么在一个控制器中调用另外一个控制器的函数,请问这里的Authentication 和  Messages  就是其他控制器。但是我这样测试了一下会出错。

console

console
发表于 2012-10-9 22:08:24 | 显示全部楼层
因为CI 本身没有autoload机制
想要调用Authentication
可以
require APPPATH.'controller'.youfile
或者把Authentication的方法写在对应的Model中,
 楼主| 发表于 2012-10-10 14:02:58 | 显示全部楼层
大道达人 发表于 2012-10-9 22:08
因为CI 本身没有autoload机制
想要调用Authentication
可以

看来目前就只好这样了。。。。
发表于 2012-10-10 14:27:09 | 显示全部楼层
放model里吧
 楼主| 发表于 2012-10-10 16:15:16 | 显示全部楼层
longjianghu 发表于 2012-10-10 14:27
放model里吧

不太好呀。。。。。。
发表于 2012-10-16 17:38:39 | 显示全部楼层
守望幸福的孩子 发表于 2012-10-10 16:15
不太好呀。。。。。。

我的意思把你要访问的哪个控制器的方法(取数据部份)放model里,这边加载Model就可以访问了啊
发表于 2012-12-29 22:49:19 | 显示全部楼层
我觉得楼主的程序架构可能存在有一定的问题。
在mvc中,c这一层并不提倡被复用。m这一层并不做逻辑判断的事情。这样一来,楼主想在不同controller里使用相同的逻辑判断,比如登陆。这时你可以采用ci里的library来做……至少我认为这样挺不错的!

如果你曾经在某个框架里看到不同controller相互调用,你可以认为那是一种弱设计,我本人并不提倡这样做。至少目前你说的登陆逻辑,可以抽象出一个login_library.php来处理。

可以关注一下我的微博 weibo.com/eyo001 我们可以交流
发表于 2013-1-5 01:28:52 | 显示全部楼层
如果按 MVC 的思想来的话 孩子 放 Model 里才是出路

本版积分规则