xmihu945 2012-02-24 17:26:12 12339次浏览 9条回复 0 0 0

controller1里调用controller2里的方法,如何做?谢谢。

  • 回复于 2012-02-24 22:11 举报

    唉,我明白你的意思,项目做多了,就会发现这样的问题,我今天晚上在测试我的考试系统的时候就出现了同样的问题,问题是这样的:有些内容是要显示布局文件中的,如何在布局中动态输出内容呢?只能在控制器类中定义变量,然后在布局中输出。可是每一个控制器用的都是同一个布局。所以都要输出相同的内容,怎么办呢?只能定义一个公共的控制器文件,其它控制器来继续这个控制器,如公共控制器文件定义为:CommonController.php。在其它控制器继承这个公共控制器。当然要先包含这个文件,我发现TP里面不用包含,直接继承就可以了。
    唉,项目做多了,就需要自定义了,Yii确实博大精深,非常值得深入研究。

  • 回复于 2012-02-28 09:48 举报

    用renderPartial(‘aa/bb’);就可以啊 aa是views下的文件夹的名字 bb 是视图页面

  • 回复于 2012-08-20 17:34 举报

    这好像可以做到
    CWebApplication中有个createController的公共方法,可以用这个实现。

    $co=Yii::app()->createController('controller2/action');
    list($controller2,$action)=$co;
    $controller2->action();
    
  • 回复于 2012-09-21 11:18 举报
    list($controller2,$action)=$co;
    $controller2->action(); 
    

    这两句是什么意思。。能详解吗??谢谢。。

  • 回复于 2013-05-31 17:31 举报

    move logic code into one model or component, use static for this new moved function, so u can call it anywhere u want, good luck. :)

  • 回复于 2013-06-05 12:54 举报

    yu

  • 回复于 2013-06-05 12:54 举报

    ui

  • 回复于 2014-05-15 11:53 举报

    用CController的forward()方法,http://www.yiichina.com/doc/api/1.1/CController#forward-detail
    Processes the request using another controller action.

  • 回复于 2014-05-16 18:16 举报

    本控制器的
    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

您需要登录后才可以回复。登录 | 立即注册