如何在yii的controller中调用外部action

 我来答
崔师尊
推荐于2016-07-09 · TA获得超过9317个赞
知道大有可为答主
回答量:3387
采纳率:36%
帮助的人:1780万
展开全部
下面我们要做的是,将actionHello形成一个单独的类,在TestController中调用它。
1. 建立wwwroot/blog/controllers/test/目录
目录名定为test是yii推荐的写法,建议action所在的目录与对应的controller同名,当然不这样也没有关系。
2.在test目录中创建HelloAction.php文件。
文件内容如下:

[php] view plaincopy
<?php
class HelloAction extends CAction{
public function run($name='ball'){
echo "Hello $name";
}
}
注意:

1.此类一定要继承自CAction类
2.必须有run方法供外部调用
3.run方法的参数,即为url中的请求参数。当然也可以通过$_GET的方式在函数内部取得
详见http://www.yiiframework.com/doc/guide/1.1/en/basics.controller#action一节中的Action Parameter Binding

3.修改TestController.php

[php] view plaincopy
<?php
class TestController extends Controller {
public function actions(){
return array('hello'=>array(
'class'=>'application.controllers.test.HelloAction',
)
);
}
}
好了,看看我们的成果吧,访问:
http://www.example.com/blog/index.php?r=test/hello&name=xuan
页面显示:
hello xuan

注:
对于'class'=>'application.controllers.test.HelloAction'在官方例子中你也许会看到类似'class'=>'HelloAction'的写法。
不要困惑,其实目的是一样。本例中之所以写为“application.controllers.test.HelloAction”,是因为test目录不在yii自动加载范畴。
如果之前有导入:Yii::import('application.controllers.test.*');
那么'class'=>'HelloAction'就可以正常工作了。
masod00
2015-02-02 · 超过26用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:49.4万
展开全部
转到另一个action 用 $this->redirect(array('controller/action'))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式