View 在Yii中渲染多个动作(带视图)

View 在Yii中渲染多个动作(带视图),view,yii,render,View,Yii,Render,我习惯于使用Zend Framework,在那里我可以进行部分渲染。在此渲染中,将调用相应的操作,并从渲染中获得输出 现在,有没有一种方法可以让YII也这样做? 我正在向一个控制器/动作发出请求,这是几个计算的报告。由于不是每个报表的计算组合都相同,因此我为每个计算创建了一个控制器。每个控制器都有一个操作,称为“报告”,用于执行计算。此报表操作使用数据库中的数据。有没有办法生成具有多个视图的页面?(每次计算一个)您也有Yii中的renderPartial,因此这应该不是问题。只要以允许重用的方式

我习惯于使用Zend Framework,在那里我可以进行部分渲染。在此渲染中,将调用相应的操作,并从渲染中获得输出

现在,有没有一种方法可以让YII也这样做?
我正在向一个控制器/动作发出请求,这是几个计算的报告。由于不是每个报表的计算组合都相同,因此我为每个计算创建了一个控制器。每个控制器都有一个操作,称为“报告”,用于执行计算。此报表操作使用数据库中的数据。有没有办法生成具有多个视图的页面?(每次计算一个)

您也有Yii中的renderPartial,因此这应该不是问题。只要以允许重用的方式构造方法(操作)。PS:renderPartial的第三个参数使您能够获取返回的输出,而不是打印的输出。

有一个控制器函数,它调用了不同的函数来获取各种计算以获取数据,然后将其解析到模板中,然后您可以将其解析为部分

内部控制器

public function actionCal()
{    
     $data = array();
     $data['finance'] = $this->financeCal();
     $data['holiday'] = $this->holidayCal();                            
     $this->render('calculation', array('data'=>$data));
}
鉴于

    <?php $this->renderPartial('//cal/_finance_summary', array('financeData'=>$data['finance'])); ?>
    <?php $this->renderPartial('//cal/_holioday_summary', array('holidayData'=>$data['holiday'])); ?>


我刚刚在我的基本控制器类中添加了一个
公共属性$data
。然后在每个操作中,我使用
$this->data
向视图发送变量。如果我需要从另一个视图文件渲染某个视图文件,我也会使用
$this->data

你也可以使用Yii小部件来实现这个目的。

我用Yii的renderPartial进行了尝试,但似乎我没有完成这个操作。应用程序将仅显示渲染视图,而不处理该操作。还是我错了?(请告诉我我错了,所以我的问题解决了:-p)有趣。在示例代码中,不同的计算是否在同一控制器中?我可以在多个控制器中使用它们吗?如何编写?是的,您可以编写可由多个控制器使用的可重用函数。例如,一个新操作也可以调用$this->holidayCal();为了获得控制器所需的信息,我对我的问题进行了重新思考,我认为应该在模型中进行计算。不在控制器的操作中。