controller之间如何调用 [ 新手入门 ]
controller1里调用controller2里的方法,如何做?谢谢。
共 9 条回复
-
唉,我明白你的意思,项目做多了,就会发现这样的问题,我今天晚上在测试我的考试系统的时候就出现了同样的问题,问题是这样的:有些内容是要显示布局文件中的,如何在布局中动态输出内容呢?只能在控制器类中定义变量,然后在布局中输出。可是每一个控制器用的都是同一个布局。所以都要输出相同的内容,怎么办呢?只能定义一个公共的控制器文件,其它控制器来继续这个控制器,如公共控制器文件定义为:CommonController.php。在其它控制器继承这个公共控制器。当然要先包含这个文件,我发现TP里面不用包含,直接继承就可以了。
唉,项目做多了,就需要自定义了,Yii确实博大精深,非常值得深入研究。 -
bingbin1321 回复于 2012-08-20 17:34 举报
这好像可以做到
CWebApplication中有个createController的公共方法,可以用这个实现。$co=Yii::app()->createController('controller2/action'); list($controller2,$action)=$co; $controller2->action();
-
flyingoneshjs 回复于 2013-06-05 12:54 举报
yu
-
flyingoneshjs 回复于 2013-06-05 12:54 举报
ui
-
用CController的forward()方法,http://www.yiichina.com/doc/api/1.1/CController#forward-detail
Processes the request using another controller action. -
本控制器的
1直接调用方法$this->actionFoo('xiaoming');
2用控制器的forward()方法
$this->forward('foo');
带参数的
$this->forward('zhou/foo/nickname/xiaobai');
3用比较深层次的方法
$action=new CInlineAction($this,'foo');
//不带参数的
$this->runAction($action);
//带参数的
$params=array('nickname'=>'xiaohei'); $action->runWithParams($params);
其他控制器的
1直接调用那个方法
Yii::import('application.controllers.ZhouController'); $zhou=new ZhouController('zhou'); //注意,这里要加上控制器的id,即去掉Controller $zhou->actionFoo('Lucy');
2用控制器的forward()方法
$this->forward('zhou/foo/nickname/Howard');
3用比较深层次的方法
Yii::app()->runController('zhou/foo/nickname/Jerry');
4对第一个方法进行改造
Yii::import('application.controllers.ZhouController'); $zhou=new ZhouController('zhou'); //注意,这里要加上控制器的id,即去掉Controller $action=new CInlineAction($zhou,'foo');
//不带参数的
$this->runAction($action);
//带参数的
$params=array('nickname'=>'David'); $action->runWithParams($params);
版本是1.1.13
xmihu945
最后登录:1970-01-01
在线时长:0小时0分
- 粉丝0
- 金钱75
- 威望0
- 积分75