lkj4565 2012-09-21 15:29:15 3723次浏览 5条回复 0 0 0

有怎么输出另一个controller里面的action的内容. 如: 有AaController 和 BbController , 两个Controller都有actionIndex 和 actionView 。。我想在B 的index里输出A的view 。。。大概是包含的意思。。就是输出内容。。我用$this->renderPartial()。。需要同一个controller。 用$this->beginContent () 这个是把整个文件输出。。我想通过controller渲染到view再输出。。。用include又要绝对路径。。。有会的么??

  • 回复于 2012-09-22 00:05 举报

    我想起来有两种方法:
    第一种是使用Ajax,通过XHR来请求。此方法不利于SEO。
    第二种就是通过widget来模仿controller来调用数据(推荐),例如,demo里blog的TagCloud,实现了复用。

    还有一种就是如楼主所说的真的调用了:
    $controller->recordCachingAction($context,$method,$params);
    还有renderDynamic方法等
    这个需要和COutputCache配合使用。

  • 回复于 2012-09-21 17:18 举报

    $this->redirect('/controllerA/view');输出A的view,
    这种不是会跳转到A的view吗??

    你就是想输出A吗?

    如果你想用widget方式,你的方法是不对的。建议看下做widget的相关文档

  • 回复于 2012-09-21 17:11 举报

    $this->redirect('/controllerA/view');输出A的view,
    这种不是会跳转到A的view吗??

    怎么将A的视图做成widget??
    $this->Widget(“view",array()); 是这样吗??但是这样好像只输出了view,就是没数据。没有通过controller渲染到view再输出,,,还是我的方法错了

  • 回复于 2012-09-21 16:55 举报

    $this->redirect('/controllerA/view');输出A的view,
    如果想输出A的view和B的view

    $this->redirect('controllerA/vew',false);
    $this->render('view');
    

    这样就是两个视图,
    如果A的视图很小,想把它嵌到B的视图中,建议将A的视图做成widget,则任何视图都可以调用

  • 回复于 2012-09-21 16:06 举报

    晕,这就是你说的包含么?
    指定view的地方,写成controller\view就OK了。

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