在某个controller中可以方便地调用兄弟类中的函数吗?

典型应用为:

有个actionReport,输出某个报表,例如在StatController下,在该Controller中有beforeAction控制了访问权限,

而在另一个AdminController中,管理员可以查看任何报表,我们不想copy paste代码到Admin中,那么在Admin里可以直接调用StatController中的actionReport吗?

Admin和Stat平级,都继承自CController

你试试看 redirect(array(’/stat/report’))

显然不能redirect,需要在同一个request中

你想要的应该是 别的框架里面说的 forward。我也很奇怪为什么 yii不提供forward。难道有同类的东西存在?

你可以调用:Yii::app()->runController($route)

但是不推荐这种用法。你应该考虑提取出公用代码。

正解啊,以前用perl的框架Catalyst,已经有思维定式了,呵呵




#just forward:

$c->forward('controller/action');

#forward and then return:

$c->detach('controller/action');



qiang说的提取公用函数,我也考虑过,只是在其他框架中,action也是可以复用的公用函数,是个理念问题,要提取当然也是可以的。

用widget