守望幸福的孩子 发表于 2012-10-9 20:03:57

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


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


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

大道达人 发表于 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 static/image/common/back.gif
因为CI 本身没有autoload机制
想要调用Authentication
可以


看来目前就只好这样了。。。。

longjianghu 发表于 2012-10-10 14:27:09

放model里吧

守望幸福的孩子 发表于 2012-10-10 16:15:16

longjianghu 发表于 2012-10-10 14:27 static/image/common/back.gif
放model里吧

不太好呀。。。。。。

longjianghu 发表于 2012-10-16 17:38:39

守望幸福的孩子 发表于 2012-10-10 16:15 static/image/common/back.gif
不太好呀。。。。。。

我的意思把你要访问的哪个控制器的方法(取数据部份)放model里,这边加载Model就可以访问了啊

鱼木侠 发表于 2012-12-29 22:49:19

我觉得楼主的程序架构可能存在有一定的问题。
在mvc中,c这一层并不提倡被复用。m这一层并不做逻辑判断的事情。这样一来,楼主想在不同controller里使用相同的逻辑判断,比如登陆。这时你可以采用ci里的library来做……至少我认为这样挺不错的!

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

可以关注一下我的微博 weibo.com/eyo001 我们可以交流

ichou 发表于 2013-1-5 01:28:52

如果按 MVC 的思想来的话 孩子 放 Model 里才是出路
页: [1]
查看完整版本: CI中怎么在一个控制器中调用另外一个控制器的函数